public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/gcc] rhel-f41-base: 9.0.1-0.3
@ 2026-06-29 12:28 Jakub Jelinek
  0 siblings, 0 replies; 3+ messages in thread
From: Jakub Jelinek @ 2026-06-29 12:28 UTC (permalink / raw)
  To: git-commits

A new commit has been pushed.

Repo   : rpms/gcc
Branch : rhel-f41-base
Commit : 3694befabb21253ecad9638a716af14de71e285b
Author : Jakub Jelinek <jakub@redhat.com>
Date   : 2019-01-19T16:14:16+01:00
Stats  : +1702/-2357 in 32 file(s)
URL    : https://src.fedoraproject.org/rpms/gcc/c/3694befabb21253ecad9638a716af14de71e285b?branch=rhel-f41-base

Log:
9.0.1-0.3

---
diff --git a/.gitignore b/.gitignore
index 18ec708..23e1e70 100644
--- a/.gitignore
+++ b/.gitignore
@@ -57,3 +57,4 @@
 /gcc-8.2.1-20181105.tar.xz
 /gcc-8.2.1-20181215.tar.xz
 /gcc-8.2.1-20190109.tar.xz
+/gcc-9.0.0-20190119.tar.xz

diff --git a/gcc.spec b/gcc.spec
index e0c4f1f..a8fdfb2 100644
--- a/gcc.spec
+++ b/gcc.spec
@@ -1,10 +1,10 @@
-%global DATE 20190109
-%global SVNREV 267776
-%global gcc_version 8.2.1
-%global gcc_major 8
+%global DATE 20190119
+%global SVNREV 268094
+%global gcc_version 9.0.0
+%global gcc_major 9
 # Note, gcc_release must be integer, if you want to add suffixes to
 # %%{release}, append them after %%{gcc_release} on Release: line.
-%global gcc_release 7
+%global gcc_release 0.3
 %global nvptx_tools_gitrev c28050f60193b3b95a18866a96f03334e874e78f
 %global nvptx_newlib_gitrev aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24
 %global _unpackaged_files_terminate_build 0
@@ -20,6 +20,7 @@
 %global build_ada 0
 %global build_objc 0
 %global build_go 0
+%global build_d 0
 %else
 %ifarch %{ix86} x86_64 ia64 ppc %{power64} alpha s390x %{arm} aarch64
 %global build_ada 1
@@ -32,6 +33,11 @@
 %else
 %global build_go 0
 %endif
+%ifarch %{ix86} x86_64 %{arm} %{mips}
+%global build_d 1
+%else
+%global build_d 0
+%endif
 %endif
 %ifarch %{ix86} x86_64 ia64 ppc64le
 %global build_libquadmath 1
@@ -68,15 +74,6 @@
 %else
 %global build_libitm 0
 %endif
-%if 0%{?rhel} > 7
-%global build_libmpx 0
-%else
-%ifarch %{ix86} x86_64
-%global build_libmpx 1
-%else
-%global build_libmpx 0
-%endif
-%endif
 %global build_isl 1
 %global build_libstdcxx_docs 1
 %ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 %{mips}
@@ -111,7 +108,7 @@ License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2
 Group: Development/Languages
 # The source for this package was pulled from upstream's vcs.  Use the
 # following commands to generate the tarball:
-# svn export svn://gcc.gnu.org/svn/gcc/branches/redhat/gcc-8-branch@%%{SVNREV} gcc-%%{version}-%%{DATE}
+# svn export svn://gcc.gnu.org/svn/gcc/branches/redhat/gcc-9-branch@%%{SVNREV} gcc-%%{version}-%%{DATE}
 # tar cf - gcc-%%{version}-%%{DATE} | xz -9e > gcc-%%{version}-%%{DATE}.tar.xz
 Source0: gcc-%{version}-%{DATE}.tar.xz
 # The source for nvptx-tools package was pulled from upstream's vcs.  Use the
@@ -239,6 +236,8 @@ Obsoletes: gcc-java < %{version}-%{release}
 %ifarch %{ix86} x86_64
 Obsoletes: libcilkrts
 Obsoletes: libcilkrts-static
+Obsoletes: libmpx
+Obsoletes: libmpx-static
 %endif
 Requires(post): /sbin/install-info
 Requires(preun): /sbin/install-info
@@ -246,19 +245,22 @@ AutoReq: true
 Provides: bundled(libiberty)
 Provides: gcc(major) = %{gcc_major}
 
-Patch0: gcc8-hack.patch
-Patch2: gcc8-i386-libgomp.patch
-Patch3: gcc8-sparc-config-detection.patch
-Patch4: gcc8-libgomp-omp_h-multilib.patch
-Patch5: gcc8-libtool-no-rpath.patch
-Patch6: gcc8-isl-dl.patch
-Patch7: gcc8-libstdc++-docs.patch
-Patch8: gcc8-no-add-needed.patch
-Patch9: gcc8-foffload-default.patch
-Patch10: gcc8-Wno-format-security.patch
-Patch11: gcc8-rh1512529-aarch64.patch
-Patch12: gcc8-mcet.patch
-Patch13: gcc8-rh1574936.patch
+Patch0: gcc9-hack.patch
+Patch1: gcc9-i386-libgomp.patch
+Patch2: gcc9-sparc-config-detection.patch
+Patch3: gcc9-libgomp-omp_h-multilib.patch
+Patch4: gcc9-libtool-no-rpath.patch
+Patch5: gcc9-isl-dl.patch
+Patch6: gcc9-libstdc++-docs.patch
+Patch7: gcc9-no-add-needed.patch
+Patch8: gcc9-foffload-default.patch
+Patch9: gcc9-Wno-format-security.patch
+Patch10: gcc9-rh1574936.patch
+Patch11: gcc9-d-shared-libphobos.patch
+Patch12: gcc9-pr88714.patch
+Patch13: gcc9-pr88901.patch
+Patch14: gcc9-pr88044.patch
+Patch15: gcc9-utf-array-test.patch
 
 Patch1000: nvptx-tools-no-ptxas.patch
 Patch1001: nvptx-tools-build.patch
@@ -285,7 +287,7 @@ Patch1002: nvptx-tools-glibc.patch
 %if %{build_go}
 # Avoid stripping these libraries and binaries.
 %global __os_install_post \
-chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.13.* \
+chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.14.* \
 chmod 644 %{buildroot}%{_prefix}/bin/go.gcc \
 chmod 644 %{buildroot}%{_prefix}/bin/gofmt.gcc \
 chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo \
@@ -293,7 +295,7 @@ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}
 chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/test2json \
 chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/vet \
 %__os_install_post \
-chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.13.* \
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.14.* \
 chmod 755 %{buildroot}%{_prefix}/bin/go.gcc \
 chmod 755 %{buildroot}%{_prefix}/bin/gofmt.gcc \
 chmod 755 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo \
@@ -304,11 +306,11 @@ chmod 755 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}
 %endif
 
 %description
-The gcc package contains the GNU Compiler Collection version 8.
+The gcc package contains the GNU Compiler Collection version 9.
 You'll need this package in order to compile C code.
 
 %package -n libgcc
-Summary: GCC version 8 shared support library
+Summary: GCC version 9 shared support library
 Group: System Environment/Libraries
 Autoreq: false
 %if !%{build_ada}
@@ -448,6 +450,37 @@ Requires: libquadmath-static = %{version}-%{release}
 %description -n libgfortran-static
 This package contains static Fortran libraries.
 
+%package gdc
+Summary: D support
+Group: Development/Languages
+Requires: gcc = %{version}-%{release}
+Requires: libgphobos = %{version}-%{release}
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
+Autoreq: true
+
+%description gdc
+The gcc-gdc package provides support for compiling D
+programs with the GNU Compiler Collection.
+
+%package -n libgphobos
+Summary: D runtime
+Group: System Environment/Libraries
+Autoreq: true
+
+%description -n libgphobos
+This package contains D shared library which is needed to run
+D dynamically linked programs.
+
+%package -n libgphobos-static
+Summary: Static D libraries
+Group: Development/Libraries
+Requires: libghobos = %{version}-%{release}
+Requires: gcc-gdc = %{version}-%{release}
+
+%description -n libgphobos-static
+This package contains static D libraries.
+
 %package -n libgomp
 Summary: GCC OpenMP v4.5 shared support library
 Group: System Environment/Libraries
@@ -647,24 +680,6 @@ Requires: liblsan = %{version}-%{release}
 %description -n liblsan-static
 This package contains Leak Sanitizer static runtime library.
 
-%package -n libmpx
-Summary: The Memory Protection Extensions runtime libraries
-Group: System Environment/Libraries
-Requires(post): /sbin/install-info
-Requires(preun): /sbin/install-info
-
-%description -n libmpx
-This package contains the Memory Protection Extensions runtime libraries
-which is used for -fcheck-pointer-bounds -mmpx instrumented programs.
-
-%package -n libmpx-static
-Summary: The Memory Protection Extensions static libraries
-Group: Development/Libraries
-Requires: libmpx = %{version}-%{release}
-
-%description -n libmpx-static
-This package contains the Memory Protection Extensions static runtime libraries.
-
 %package -n cpp
 Summary: The C Preprocessor
 Group: Development/Languages
@@ -807,26 +822,27 @@ to NVidia PTX capable devices if available.
 %prep
 %setup -q -n gcc-%{version}-%{DATE} -a 1 -a 2
 %patch0 -p0 -b .hack~
-%patch2 -p0 -b .i386-libgomp~
-%patch3 -p0 -b .sparc-config-detection~
-%patch4 -p0 -b .libgomp-omp_h-multilib~
-%patch5 -p0 -b .libtool-no-rpath~
+%patch1 -p0 -b .i386-libgomp~
+%patch2 -p0 -b .sparc-config-detection~
+%patch3 -p0 -b .libgomp-omp_h-multilib~
+%patch4 -p0 -b .libtool-no-rpath~
 %if %{build_isl}
-%patch6 -p0 -b .isl-dl~
+%patch5 -p0 -b .isl-dl~
 %endif
 %if %{build_libstdcxx_docs}
-%patch7 -p0 -b .libstdc++-docs~
-%endif
-%patch8 -p0 -b .no-add-needed~
-%patch9 -p0 -b .foffload-default~
-%patch10 -p0 -b .Wno-format-security~
-%patch11 -p0 -b .rh1512529-aarch64~
-%if 0%{?fedora} == 28
-%patch12 -p0 -b .mcet~
+%patch6 -p0 -b .libstdc++-docs~
 %endif
+%patch7 -p0 -b .no-add-needed~
+%patch8 -p0 -b .foffload-default~
+%patch9 -p0 -b .Wno-format-security~
 %if 0%{?fedora} >= 29 || 0%{?rhel} > 7
-%patch13 -p0 -b .rh1574936~
+%patch10 -p0 -b .rh1574936~
 %endif
+%patch11 -p0 -b .d-shared-libphobos~
+%patch12 -p0 -b .pr88714~
+%patch13 -p0 -b .pr88901~
+%patch14 -p0 -b .pr88044~
+%patch15 -p0 -b .utf-array-test~
 
 cd nvptx-tools-%{nvptx_tools_gitrev}
 %patch1000 -p1 -b .nvptx-tools-no-ptxas~
@@ -838,8 +854,6 @@ echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE
 
 cp -a libstdc++-v3/config/cpu/i{4,3}86/atomicity.h
 
-echo 'TM_H += $(srcdir)/config/rs6000/rs6000-modes.h' >> gcc/config/rs6000/t-rs6000
-
 ./contrib/gcc_update --touch
 
 LC_ALL=C sed -i -e 's/\xa0/ /' gcc/doc/options.texi
@@ -934,6 +948,7 @@ cd obj-%{gcc_target_platform}
 enablelgo=
 enablelada=
 enablelobjc=
+enableld=
 %if %{build_objc}
 enablelobjc=,objc,obj-c++
 %endif
@@ -943,6 +958,9 @@ enablelada=,ada
 %if %{build_go}
 enablelgo=,go
 %endif
+%if %{build_d}
+enableld=,d
+%endif
 CONFIGURE_OPTS="\
 	--prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
 	--with-bugurl=http://bugzilla.redhat.com/bugzilla \
@@ -966,11 +984,6 @@ CONFIGURE_OPTS="\
 %else
 	--without-isl \
 %endif
-%if %{build_libmpx}
-	--enable-libmpx \
-%else
-	--disable-libmpx \
-%endif
 %if %{build_offload_nvptx}
 	--enable-offload-targets=nvptx-none \
 	--without-cuda-driver \
@@ -1067,7 +1080,7 @@ CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \
 		  | sed 's/ -Wformat-security / -Wformat -Wformat-security /'`" \
 	XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \
 	../configure --enable-bootstrap \
-	--enable-languages=c,c++,fortran${enablelobjc}${enablelada}${enablelgo},lto \
+	--enable-languages=c,c++,fortran${enablelobjc}${enablelada}${enablelgo}${enableld},lto \
 	$CONFIGURE_OPTS
 
 %ifarch sparc sparcv9 sparc64
@@ -1119,11 +1132,11 @@ cd ../..
 
 # Copy various doc files here and there
 cd ..
-mkdir -p rpm.doc/gfortran rpm.doc/objc
+mkdir -p rpm.doc/gfortran rpm.doc/objc rpm.doc/gdc rpm.doc/libphobos
 mkdir -p rpm.doc/go rpm.doc/libgo rpm.doc/libquadmath rpm.doc/libitm
-mkdir -p rpm.doc/changelogs/{gcc/cp,gcc/ada,gcc/jit,libstdc++-v3,libobjc,libgomp,libcc1,libatomic,libsanitizer,libmpx}
+mkdir -p rpm.doc/changelogs/{gcc/cp,gcc/ada,gcc/jit,libstdc++-v3,libobjc,libgomp,libcc1,libatomic,libsanitizer}
 
-for i in {gcc,gcc/cp,gcc/ada,gcc/jit,libstdc++-v3,libobjc,libgomp,libcc1,libatomic,libsanitizer,libmpx}/ChangeLog*; do
+for i in {gcc,gcc/cp,gcc/ada,gcc/jit,libstdc++-v3,libobjc,libgomp,libcc1,libatomic,libsanitizer}/ChangeLog*; do
 	cp -p $i rpm.doc/changelogs/$i
 done
 
@@ -1138,6 +1151,15 @@ done)
 	cp -p $i ../rpm.doc/objc/$i.libobjc
 done)
 %endif
+%if %{build_d}
+(cd gcc/d; for i in ChangeLog*; do
+	cp -p $i ../../rpm.doc/gdc/$i.gdc
+done)
+(cd libphobos; for i in ChangeLog*; do
+	cp -p $i ../rpm.doc/libphobos/$i.libphobos
+done
+cp -a src/LICENSE*.txt libdruntime/LICENSE ../rpm.doc/libphobos/)
+%endif
 %if %{build_libquadmath}
 (cd libquadmath; for i in ChangeLog* COPYING.LIB; do
 	cp -p $i ../rpm.doc/libquadmath/$i.libquadmath
@@ -1303,15 +1325,15 @@ fi
 find %{buildroot} -name \*.la | xargs rm -f
 
 mv %{buildroot}%{_prefix}/%{_lib}/libgfortran.spec $FULLPATH/
+%if %{build_d}
+mv %{buildroot}%{_prefix}/%{_lib}/libgphobos.spec $FULLPATH/
+%endif
 %if %{build_libitm}
 mv %{buildroot}%{_prefix}/%{_lib}/libitm.spec $FULLPATH/
 %endif
 %if %{build_libasan}
 mv %{buildroot}%{_prefix}/%{_lib}/libsanitizer.spec $FULLPATH/
 %endif
-%if %{build_libmpx}
-mv %{buildroot}%{_prefix}/%{_lib}/libmpx.spec $FULLPATH/
-%endif
 
 mkdir -p %{buildroot}/%{_lib}
 mv -f %{buildroot}%{_prefix}/%{_lib}/libgcc_s.so.1 %{buildroot}/%{_lib}/libgcc_s-%{gcc_major}-%{DATE}.so.1
@@ -1395,11 +1417,15 @@ ln -sf ../../../libstdc++.so.6.*[0-9] libstdc++.so
 ln -sf ../../../libgfortran.so.5.* libgfortran.so
 ln -sf ../../../libgomp.so.1.* libgomp.so
 %if %{build_go}
-ln -sf ../../../libgo.so.13.* libgo.so
+ln -sf ../../../libgo.so.14.* libgo.so
 %endif
 %if %{build_libquadmath}
 ln -sf ../../../libquadmath.so.0.* libquadmath.so
 %endif
+%if %{build_d}
+ln -sf ../../../libgdruntime.so.76.* libgdruntime.so
+ln -sf ../../../libgphobos.so.76.* libgphobos.so
+%endif
 %if %{build_libitm}
 ln -sf ../../../libitm.so.1.* libitm.so
 %endif
@@ -1413,10 +1439,6 @@ mv ../../../libasan_preinit.o libasan_preinit.o
 %if %{build_libubsan}
 ln -sf ../../../libubsan.so.1.* libubsan.so
 %endif
-%if %{build_libmpx}
-ln -sf ../../../libmpx.so.2.* libmpx.so
-ln -sf ../../../libmpxwrappers.so.2.* libmpxwrappers.so
-%endif
 else
 %if %{build_objc}
 ln -sf ../../../../%{_lib}/libobjc.so.4 libobjc.so
@@ -1425,11 +1447,15 @@ ln -sf ../../../../%{_lib}/libstdc++.so.6.*[0-9] libstdc++.so
 ln -sf ../../../../%{_lib}/libgfortran.so.5.* libgfortran.so
 ln -sf ../../../../%{_lib}/libgomp.so.1.* libgomp.so
 %if %{build_go}
-ln -sf ../../../../%{_lib}/libgo.so.13.* libgo.so
+ln -sf ../../../../%{_lib}/libgo.so.14.* libgo.so
 %endif
 %if %{build_libquadmath}
 ln -sf ../../../../%{_lib}/libquadmath.so.0.* libquadmath.so
 %endif
+%if %{build_d}
+ln -sf ../../../../%{_lib}/libgdruntime.so.76.* libgdruntime.so
+ln -sf ../../../../%{_lib}/libgphobos.so.76.* libgphobos.so
+%endif
 %if %{build_libitm}
 ln -sf ../../../../%{_lib}/libitm.so.1.* libitm.so
 %endif
@@ -1443,10 +1469,6 @@ mv ../../../../%{_lib}/libasan_preinit.o libasan_preinit.o
 %if %{build_libubsan}
 ln -sf ../../../../%{_lib}/libubsan.so.1.* libubsan.so
 %endif
-%if %{build_libmpx}
-ln -sf ../../../../%{_lib}/libmpx.so.2.* libmpx.so
-ln -sf ../../../../%{_lib}/libmpxwrappers.so.2.* libmpxwrappers.so
-%endif
 %if %{build_libtsan}
 rm -f libtsan.so
 echo 'INPUT ( %{_prefix}/%{_lib}/'`echo ../../../../%{_lib}/libtsan.so.0.* | sed 's,^.*libt,libt,'`' )' > libtsan.so
@@ -1469,6 +1491,10 @@ mv -f %{buildroot}%{_prefix}/%{_lib}/libgomp.*a .
 %if %{build_libquadmath}
 mv -f %{buildroot}%{_prefix}/%{_lib}/libquadmath.*a $FULLLPATH/
 %endif
+%if %{build_d}
+mv -f %{buildroot}%{_prefix}/%{_lib}/libgdruntime.*a $FULLLPATH/
+mv -f %{buildroot}%{_prefix}/%{_lib}/libgphobos.*a $FULLLPATH/
+%endif
 %if %{build_libitm}
 mv -f %{buildroot}%{_prefix}/%{_lib}/libitm.*a $FULLLPATH/
 %endif
@@ -1481,10 +1507,6 @@ mv -f %{buildroot}%{_prefix}/%{_lib}/libasan.*a $FULLLPATH/
 %if %{build_libubsan}
 mv -f %{buildroot}%{_prefix}/%{_lib}/libubsan.*a $FULLLPATH/
 %endif
-%if %{build_libmpx}
-mv -f %{buildroot}%{_prefix}/%{_lib}/libmpx.*a $FULLLPATH/
-mv -f %{buildroot}%{_prefix}/%{_lib}/libmpxwrappers.*a $FULLLPATH/
-%endif
 %if %{build_libtsan}
 mv -f %{buildroot}%{_prefix}/%{_lib}/libtsan.*a $FULLPATH/
 %endif
@@ -1509,28 +1531,28 @@ mv -f $FULLPATH/ada{include,lib} $FULLLPATH/
 pushd $FULLLPATH/adalib
 if [ "%{_lib}" = "lib" ]; then
 ln -sf ../../../../../libgnarl-*.so libgnarl.so
-ln -sf ../../../../../libgnarl-*.so libgnarl-8.so
+ln -sf ../../../../../libgnarl-*.so libgnarl-9.so
 ln -sf ../../../../../libgnat-*.so libgnat.so
-ln -sf ../../../../../libgnat-*.so libgnat-8.so
+ln -sf ../../../../../libgnat-*.so libgnat-9.so
 else
 ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl.so
-ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl-8.so
+ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl-9.so
 ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat.so
-ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat-8.so
+ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat-9.so
 fi
 popd
 else
 pushd $FULLPATH/adalib
 if [ "%{_lib}" = "lib" ]; then
 ln -sf ../../../../libgnarl-*.so libgnarl.so
-ln -sf ../../../../libgnarl-*.so libgnarl-8.so
+ln -sf ../../../../libgnarl-*.so libgnarl-9.so
 ln -sf ../../../../libgnat-*.so libgnat.so
-ln -sf ../../../../libgnat-*.so libgnat-8.so
+ln -sf ../../../../libgnat-*.so libgnat-9.so
 else
 ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl.so
-ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl-8.so
+ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl-9.so
 ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat.so
-ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat-8.so
+ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat-9.so
 fi
 popd
 fi
@@ -1545,14 +1567,21 @@ ln -sf ../`echo ../../../../lib/libgfortran.so.5.* | sed s~/lib/~/lib64/~` 64/li
 ln -sf ../`echo ../../../../lib/libgomp.so.1.* | sed s~/lib/~/lib64/~` 64/libgomp.so
 %if %{build_go}
 rm -f libgo.so
-echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.13.* | sed 's,^.*libg,libg,'`' )' > libgo.so
-echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.13.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.14.* | sed 's,^.*libg,libg,'`' )' > libgo.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.14.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so
 %endif
 %if %{build_libquadmath}
 rm -f libquadmath.so
 echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libquadmath.so.0.* | sed 's,^.*libq,libq,'`' )' > libquadmath.so
 echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libquadmath.so.0.* | sed 's,^.*libq,libq,'`' )' > 64/libquadmath.so
 %endif
+%if %{build_d}
+rm -f libgdruntime.so libgphobos.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgdruntime.so.76.* | sed 's,^.*libg,libg,'`' )' > libgdruntime.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgdruntime.so.76.* | sed 's,^.*libg,libg,'`' )' > 64/libgdruntime.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgphobos.so.76.* | sed 's,^.*libg,libg,'`' )' > libgphobos.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgphobos.so.76.* | sed 's,^.*libg,libg,'`' )' > 64/libgphobos.so
+%endif
 %if %{build_libitm}
 rm -f libitm.so
 echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libitm.so.1.* | sed 's,^.*libi,libi,'`' )' > libitm.so
@@ -1574,14 +1603,6 @@ rm -f libubsan.so
 echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libubsan.so.1.* | sed 's,^.*libu,libu,'`' )' > libubsan.so
 echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libubsan.so.1.* | sed 's,^.*libu,libu,'`' )' > 64/libubsan.so
 %endif
-%if %{build_libmpx}
-rm -f libmpx.so
-echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libmpx.so.2.* | sed 's,^.*libm,libm,'`' )' > libmpx.so
-echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libmpx.so.2.* | sed 's,^.*libm,libm,'`' )' > 64/libmpx.so
-rm -f libmpxwrappers.so
-echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libmpxwrappers.so.2.* | sed 's,^.*libm,libm,'`' )' > libmpxwrappers.so
-echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libmpxwrappers.so.2.* | sed 's,^.*libm,libm,'`' )' > 64/libmpxwrappers.so
-%endif
 ln -sf lib32/libgfortran.a libgfortran.a
 ln -sf ../lib64/libgfortran.a 64/libgfortran.a
 %if %{build_objc}
@@ -1598,6 +1619,12 @@ ln -sf ../lib64/libsupc++.a 64/libsupc++.a
 ln -sf lib32/libquadmath.a libquadmath.a
 ln -sf ../lib64/libquadmath.a 64/libquadmath.a
 %endif
+%if %{build_d}
+ln -sf lib32/libgdruntime.a libgdruntime.a
+ln -sf ../lib64/libgdruntime.a 64/libgdruntime.a
+ln -sf lib32/libgphobos.a libgphobos.a
+ln -sf ../lib64/libgphobos.a 64/libgphobos.a
+%endif
 %if %{build_libitm}
 ln -sf lib32/libitm.a libitm.a
 ln -sf ../lib64/libitm.a 64/libitm.a
@@ -1614,12 +1641,6 @@ ln -sf ../lib64/libasan.a 64/libasan.a
 ln -sf lib32/libubsan.a libubsan.a
 ln -sf ../lib64/libubsan.a 64/libubsan.a
 %endif
-%if %{build_libmpx}
-ln -sf lib32/libmpx.a libmpx.a
-ln -sf ../lib64/libmpx.a 64/libmpx.a
-ln -sf lib32/libmpxwrappers.a libmpxwrappers.a
-ln -sf ../lib64/libmpxwrappers.a 64/libmpxwrappers.a
-%endif
 %if %{build_go}
 ln -sf lib32/libgo.a libgo.a
 ln -sf ../lib64/libgo.a 64/libgo.a
@@ -1645,14 +1666,21 @@ ln -sf ../`echo ../../../../lib64/libgfortran.so.5.* | sed s~/../lib64/~/~` 32/l
 ln -sf ../`echo ../../../../lib64/libgomp.so.1.* | sed s~/../lib64/~/~` 32/libgomp.so
 %if %{build_go}
 rm -f libgo.so
-echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.13.* | sed 's,^.*libg,libg,'`' )' > libgo.so
-echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.13.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.14.* | sed 's,^.*libg,libg,'`' )' > libgo.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.14.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so
 %endif
 %if %{build_libquadmath}
 rm -f libquadmath.so
 echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libquadmath.so.0.* | sed 's,^.*libq,libq,'`' )' > libquadmath.so
 echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libquadmath.so.0.* | sed 's,^.*libq,libq,'`' )' > 32/libquadmath.so
 %endif
+%if %{build_d}
+rm -f libgdruntime.so libgphobos.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgdruntime.so.76.* | sed 's,^.*libg,libg,'`' )' > libgdruntime.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgdruntime.so.76.* | sed 's,^.*libg,libg,'`' )' > 32/libgdruntime.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgphobos.so.76.* | sed 's,^.*libg,libg,'`' )' > libgphobos.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgphobos.so.76.* | sed 's,^.*libg,libg,'`' )' > 32/libgphobos.so
+%endif
 %if %{build_libitm}
 rm -f libitm.so
 echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libitm.so.1.* | sed 's,^.*libi,libi,'`' )' > libitm.so
@@ -1674,14 +1702,6 @@ rm -f libubsan.so
 echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libubsan.so.1.* | sed 's,^.*libu,libu,'`' )' > libubsan.so
 echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libubsan.so.1.* | sed 's,^.*libu,libu,'`' )' > 32/libubsan.so
 %endif
-%if %{build_libmpx}
-rm -f libmpx.so
-echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libmpx.so.2.* | sed 's,^.*libm,libm,'`' )' > libmpx.so
-echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libmpx.so.2.* | sed 's,^.*libm,libm,'`' )' > 32/libmpx.so
-rm -f libmpxwrappers.so
-echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libmpxwrappers.so.2.* | sed 's,^.*libm,libm,'`' )' > libmpxwrappers.so
-echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libmpxwrappers.so.2.* | sed 's,^.*libm,libm,'`' )' > 32/libmpxwrappers.so
-%endif
 %if %{build_objc}
 mv -f %{buildroot}%{_prefix}/lib/libobjc.*a 32/
 %endif
@@ -1700,6 +1720,12 @@ ln -sf lib64/libsupc++.a libsupc++.a
 ln -sf ../lib32/libquadmath.a 32/libquadmath.a
 ln -sf lib64/libquadmath.a libquadmath.a
 %endif
+%if %{build_d}
+ln -sf ../lib32/libgdruntime.a 32/libgdruntime.a
+ln -sf lib64/libgdruntime.a libgdruntime.a
+ln -sf ../lib32/libgphobos.a 32/libgphobos.a
+ln -sf lib64/libgphobos.a libgphobos.a
+%endif
 %if %{build_libitm}
 ln -sf ../lib32/libitm.a 32/libitm.a
 ln -sf lib64/libitm.a libitm.a
@@ -1716,12 +1742,6 @@ ln -sf lib64/libasan.a libasan.a
 ln -sf ../lib32/libubsan.a 32/libubsan.a
 ln -sf lib64/libubsan.a libubsan.a
 %endif
-%if %{build_libmpx}
-ln -sf ../lib32/libmpx.a 32/libmpx.a
-ln -sf lib64/libmpx.a libmpx.a
-ln -sf ../lib32/libmpxwrappers.a 32/libmpxwrappers.a
-ln -sf lib64/libmpxwrappers.a libmpxwrappers.a
-%endif
 %if %{build_go}
 ln -sf ../lib32/libgo.a 32/libgo.a
 ln -sf lib64/libgo.a libgo.a
@@ -1745,6 +1765,10 @@ ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libsup
 %if %{build_libquadmath}
 ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libquadmath.a 32/libquadmath.a
 %endif
+%if %{build_d}
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libgdruntime.a 32/libgdruntime.a
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libgphobos.a 32/libgphobos.a
+%endif
 %if %{build_libitm}
 ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libitm.a 32/libitm.a
 %endif
@@ -1757,10 +1781,6 @@ ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libasa
 %if %{build_libubsan}
 ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libubsan.a 32/libubsan.a
 %endif
-%if %{build_libmpx}
-ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libmpx.a 32/libmpx.a
-ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libmpxwrappers.a 32/libmpxwrappers.a
-%endif
 %if %{build_go}
 ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libgo.a 32/libgo.a
 ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_major}/libgobegin.a 32/libgobegin.a
@@ -1786,8 +1806,7 @@ for d in . $FULLLSUBDIR; do
 		-o -name libgo.a -o -name libgobegin.a \
 		-o -name libgolibbegin.a -o -name libgomp.a \
 		-o -name libitm.a -o -name liblsan.a \
-		-o -name libmpx.a -o -name libmpxwrappers.a \
-		-o -name libobjc.a \
+		-o -name libobjc.a -o -name libgdruntime.a -o -name libgphobos.a \
 		-o -name libquadmath.a -o -name libstdc++.a \
 		-o -name libstdc++fs.a -o -name libsupc++.a \
 		-o -name libtsan.a -o -name libubsan.a \) -a -type f`; do
@@ -1799,10 +1818,10 @@ done
 # Strip debug info from Fortran/ObjC/Java static libraries
 strip -g `find . \( -name libgfortran.a -o -name libobjc.a -o -name libgomp.a \
 		    -o -name libgcc.a -o -name libgcov.a -o -name libquadmath.a \
+		    -o -name libgdruntime.a -o -name libgphobos.a \
 		    -o -name libitm.a -o -name libgo.a -o -name libcaf\*.a \
 		    -o -name libatomic.a -o -name libasan.a -o -name libtsan.a \
-		    -o -name libubsan.a -o -name liblsan.a \
-		    -o -name libmpx.a -o -name libmpxwrappers.a -o -name libcc1.a \) \
+		    -o -name libubsan.a -o -name liblsan.a -o -name libcc1.a \) \
 		 -a -type f`
 popd
 chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgfortran.so.5.*
@@ -1811,6 +1830,10 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/libcc1.so.0.*
 %if %{build_libquadmath}
 chmod 755 %{buildroot}%{_prefix}/%{_lib}/libquadmath.so.0.*
 %endif
+%if %{build_d}
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgdruntime.so.76.*
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgphobos.so.76.*
+%endif
 %if %{build_libitm}
 chmod 755 %{buildroot}%{_prefix}/%{_lib}/libitm.so.1.*
 %endif
@@ -1823,10 +1846,6 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/libasan.so.5.*
 %if %{build_libubsan}
 chmod 755 %{buildroot}%{_prefix}/%{_lib}/libubsan.so.1.*
 %endif
-%if %{build_libmpx}
-chmod 755 %{buildroot}%{_prefix}/%{_lib}/libmpx.so.2.*
-chmod 755 %{buildroot}%{_prefix}/%{_lib}/libmpxwrappers.so.2.*
-%endif
 %if %{build_libtsan}
 chmod 755 %{buildroot}%{_prefix}/%{_lib}/libtsan.so.0.*
 %endif
@@ -1835,7 +1854,7 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/liblsan.so.0.*
 %endif
 %if %{build_go}
 # Avoid stripping these libraries and binaries.
-chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.13.*
+chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.14.*
 chmod 644 %{buildroot}%{_prefix}/bin/go.gcc
 chmod 644 %{buildroot}%{_prefix}/bin/gofmt.gcc
 chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo
@@ -1899,13 +1918,13 @@ rm -f $FULLEPATH/install-tools/{mkheaders,fixincl}
 rm -f %{buildroot}%{_prefix}/lib/{32,64}/libiberty.a
 rm -f %{buildroot}%{_prefix}/%{_lib}/libssp*
 rm -f %{buildroot}%{_prefix}/%{_lib}/libvtv* || :
-rm -f %{buildroot}%{_prefix}/bin/gappletviewer || :
 rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gfortran || :
 rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gccgo || :
 rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gcj || :
 rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gcc-ar || :
 rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gcc-nm || :
 rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gcc-ranlib || :
+rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gdc || :
 
 %ifarch %{multilib_64_archs}
 # Remove libraries for the other arch on multilib arches
@@ -1991,6 +2010,18 @@ if [ $1 = 0 -a -f %{_infodir}/gfortran.info.gz ]; then
     --info-dir=%{_infodir} %{_infodir}/gfortran.info.gz || :
 fi
 
+%post gdc
+if [ -f %{_infodir}/gdc.info.gz ]; then
+  /sbin/install-info \
+    --info-dir=%{_infodir} %{_infodir}/gdc.info.gz || :
+fi
+
+%preun gdc
+if [ $1 = 0 -a -f %{_infodir}/gdc.info.gz ]; then
+  /sbin/install-info --delete \
+    --info-dir=%{_infodir} %{_infodir}/gdc.info.gz || :
+fi
+
 %post gnat
 if [ -f %{_infodir}/gnat_rm.info.gz ]; then
   /sbin/install-info \
@@ -2056,6 +2087,10 @@ end
 
 %postun -n libgfortran -p /sbin/ldconfig
 
+%post -n libgphobos -p /sbin/ldconfig
+
+%postun -n libgphobos -p /sbin/ldconfig
+
 %post -n libgnat -p /sbin/ldconfig
 
 %postun -n libgnat -p /sbin/ldconfig
@@ -2145,10 +2180,6 @@ fi
 
 %postun -n liblsan -p /sbin/ldconfig
 
-%post -n libmpx -p /sbin/ldconfig
-
-%postun -n libmpx -p /sbin/ldconfig
-
 %post -n libgo -p /sbin/ldconfig
 
 %postun -n libgo -p /sbin/ldconfig
@@ -2286,6 +2317,8 @@ fi
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/pconfigintrin.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/wbnoinvdintrin.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/movdirintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/waitpkgintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/cldemoteintrin.h
 %endif
 %ifarch ia64
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ia64intrin.h
@@ -2293,7 +2326,6 @@ fi
 %ifarch ppc ppc64 ppc64le ppc64p7
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ppc-asm.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/altivec.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/paired.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ppu_intrinsics.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/si2vmx.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/spu2vmx.h
@@ -2307,6 +2339,9 @@ fi
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/emmintrin.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mmintrin.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/x86intrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/pmmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/tmmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/smmintrin.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amo.h
 %endif
 %ifarch %{arm}
@@ -2331,9 +2366,6 @@ fi
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/htmxlintrin.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/vecintrin.h
 %endif
-%if %{build_libmpx}
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libmpx.spec
-%endif
 %if %{build_libasan}
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/sanitizer
 %endif
@@ -2382,12 +2414,6 @@ fi
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libubsan.a
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libubsan.so
 %endif
-%if %{build_libmpx}
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libmpx.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libmpx.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libmpxwrappers.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libmpxwrappers.so
-%endif
 %endif
 %ifarch %{multilib_64_archs}
 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32
@@ -2419,12 +2445,6 @@ fi
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libubsan.a
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libubsan.so
 %endif
-%if %{build_libmpx}
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libmpx.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libmpx.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libmpxwrappers.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libmpxwrappers.so
-%endif
 %endif
 %ifarch sparcv9 sparc64 ppc ppc64 ppc64p7
 %if %{build_libquadmath}
@@ -2448,12 +2468,6 @@ fi
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libubsan.a
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libubsan.so
 %endif
-%if %{build_libmpx}
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libmpx.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libmpx.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libmpxwrappers.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libmpxwrappers.so
-%endif
 %else
 %if %{build_libatomic}
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic.so
@@ -2465,10 +2479,6 @@ fi
 %if %{build_libubsan}
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libubsan.so
 %endif
-%if %{build_libmpx}
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libmpx.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libmpxwrappers.so
-%endif
 %endif
 %if %{build_libtsan}
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libtsan.so
@@ -2641,7 +2651,9 @@ fi
 %dir %{_prefix}/libexec/gcc
 %dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
 %dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include
 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ISO_Fortran_binding.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/omp_lib.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/omp_lib.f90
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/omp_lib.mod
@@ -2696,6 +2708,68 @@ fi
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgfortran.a
 %endif
 
+%if %{build_d}
+%files gdc
+%{_prefix}/bin/gdc
+%{_mandir}/man1/gdc.1*
+%{_infodir}/gdc*
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/d
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/d21
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgphobos.spec
+%ifarch sparcv9 sparc64 ppc ppc64 ppc64p7
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgdruntime.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgphobos.a
+%endif
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgdruntime.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgphobos.so
+%ifarch sparcv9 ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgdruntime.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgphobos.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgdruntime.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgphobos.so
+%endif
+%ifarch %{multilib_64_archs}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgdruntime.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgphobos.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgdruntime.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgphobos.so
+%endif
+%doc rpm.doc/gdc/*
+
+%files -n libgphobos
+%{_prefix}/%{_lib}/libgdruntime.so.76*
+%{_prefix}/%{_lib}/libgphobos.so.76*
+%doc rpm.doc/libphobos/*
+
+%files -n libgphobos-static
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
+%ifarch sparcv9 ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libgdruntime.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libgphobos.a
+%endif
+%ifarch sparc64 ppc64 ppc64p7
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libgdruntime.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libgphobos.a
+%endif
+%ifnarch sparcv9 sparc64 ppc ppc64 ppc64p7
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgdruntime.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgphobos.a
+%endif
+%endif
+
 %if %{build_ada}
 %files gnat
 %{_prefix}/bin/gnat
@@ -2949,32 +3023,6 @@ fi
 %license libsanitizer/LICENSE.TXT
 %endif
 
-%if %{build_libmpx}
-%files -n libmpx
-%{_prefix}/%{_lib}/libmpx.so.2*
-%{_prefix}/%{_lib}/libmpxwrappers.so.2*
-
-%files -n libmpx-static
-%dir %{_prefix}/lib/gcc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
-%ifarch sparcv9 ppc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libmpx.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libmpxwrappers.a
-%endif
-%ifarch sparc64 ppc64 ppc64p7
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libmpx.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libmpxwrappers.a
-%endif
-%ifnarch sparcv9 sparc64 ppc ppc64 ppc64p7
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libmpx.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libmpxwrappers.a
-%endif
-%doc rpm.doc/changelogs/libmpx/ChangeLog*
-%endif
-
 %if %{build_go}
 %files go
 %ghost %{_prefix}/bin/go
@@ -3021,7 +3069,7 @@ fi
 %doc rpm.doc/go/*
 
 %files -n libgo
-%attr(755,root,root) %{_prefix}/%{_lib}/libgo.so.13*
+%attr(755,root,root) %{_prefix}/%{_lib}/libgo.so.14*
 %doc rpm.doc/libgo/*
 
 %files -n libgo-devel
@@ -3128,512 +3176,39 @@ fi
 %endif
 
 %changelog
-* Wed Jan  9 2019 Jakub Jelinek <jakub@redhat.com> 8.2.1-7
-- update from the 8 branch
-  - PRs c++/60994, c++/82294, c++/86669, c++/86900, c++/87380, c++/87436,
-	c++/87506, c++/87539, c++/87934, c++/88103, c++/88122, c++/88180,
-	c++/88181, c++/88215, c++/88410, debug/85550, debug/87039,
-	debug/88644, fortran/77325, fortran/77703, fortran/85544,
-	fortran/85798, fortran/87359, fortran/88116, fortran/88138,
-	fortran/88169, fortran/88377, fortran/88463, fortran/88467,
-	inline-asm/55681, ipa/88561, libstdc++/64883, libstdc++/87855,
-	lto/86517, lto/88130, lto/88185, middle-end/82564, middle-end/85594,
-	middle-end/88553, rtl-optimization/87475, rtl-optimization/88018,
-	rtl-optimization/88253, rtl-optimization/88416,
-	rtl-optimization/88470, rtl-optimization/88563, sanitizer/88426,
-	target/60563, target/78444, target/81210, target/81693, target/84010,
-	target/85593, target/85644, target/86832, target/87598, target/88213,
-	target/88234, target/88343, target/88418, target/88522, target/88541,
-	target/88594, target/88620, testsuite/67974, tree-optimization/68356,
-	tree-optimization/71109, tree-optimization/85794,
-	tree-optimization/87320, tree-optimization/87360,
-	tree-optimization/87895, tree-optimization/87898,
-	tree-optimization/88071
-- include forgotten ppc* intrinsic headers
-
-* Sat Dec 15 2018 Jakub Jelinek <jakub@redhat.com> 8.2.1-6
-- update from the 8 branch
-  - PRs c++/86246, c++/87531, c++/87989, c++/88120, debug/87462, debug/88006,
-	fortran/87922, fortran/88025, fortran/88048, fortran/88073,
-	fortran/88143, fortran/88155, fortran/88205, fortran/88206,
-	fortran/88228, fortran/88249, fortran/88269, fortran/97922,
-	gcov-profile/88045, libfortran/78351, libfortran/88137,
-	libstdc++/70694, libstdc++/87520, libstdc++/88199, lto/88077,
-	middle-end/58372, rtl-optimization/85925, rtl-optimization/88001,
-	target/81685, target/85968, target/87496, target/87853, target/87867,
-	target/87928, target/88051, target/88224, testsuite/78544,
-	tree-optimization/79351, tree-optimization/87288,
-	tree-optimization/88229
-
-* Mon Nov  5 2018 Jakub Jelinek <jakub@redhat.com> 8.2.1-5
-- update from the 8 branch
-  - PRs ada/81878, bootstrap/81033, c++/86288, debug/86687, debug/87362,
-	debug/87428, fortran/87597, fortran/87725, libstdc++/70966,
-	libstdc++/77854, libstdc++/78595, libstdc++/86751, libstdc++/87061,
-	libstdc++/87641, libstdc++/87704, libstdc++/87749, libstdc++/87809,
-	libstdc++/87822, middle-end/63155, middle-end/85488, middle-end/87087,
-	middle-end/87610, middle-end/87623, middle-end/87645,
-	middle-end/87647, middle-end/87649, other/86198, sanitizer/87837,
-	target/52795, target/81733, target/85669, target/87511,
-	tree-optimization/63155, tree-optimization/87465,
-	tree-optimization/87473, tree-optimization/87665,
-	tree-optimization/87700, tree-optimization/87745
-  - fix store merging regression (PR tree-optimization/87859, #1645400)
-
-* Thu Oct 11 2018 Jakub Jelinek <jakub@redhat.com> 8.2.1-4
-- update from the 8 branch
-  - PRs bootstrap/87225, c++/84940, c++/85070, c++/86881, c++/87093,
-	c++/87137, c++/87185, c++/87582, fortran/83999, fortran/85395,
-	fortran/85954, fortran/86111, fortran/86116, fortran/86372,
-	fortran/86830, fortran/87277, fortran/87284, gcov-profile/85871,
-	gcov-profile/86109, libstdc++/87278, libstdc++/87538,
-	middle-end/87188, middle-end/87248, other/87353,
-	rtl-optimization/86771, rtl-optimization/86882, sanitizer/85774,
-	target/82699, target/85666, target/86731, target/86989, target/87033,
-	target/87224, target/87370, target/87414, target/87467, target/87517,
-	target/87522, target/87550, tree-optimization/86844
-
-* Wed Sep  5 2018 Jakub Jelinek <jakub@redhat.com> 8.2.1-3
-- update from the 8 branch
-  - PRs c++/86190, c++/86706, c++/86728, c++/86738, c++/86763, c++/86767,
-	c++/86836, c++/87095, c++/87122, c++/87155, fortran/86328,
-	fortran/86760, fortran/86837, fortran/86906, gcov-profile/86817,
-	libfortran/86704, libstdc++/60555, libstdc++/84535, libstdc++/86597,
-	libstdc++/86861, libstdc++/86874, libstdc++/87116, lto/86456,
-	middle-end/86505, middle-end/86705, middle-end/87024,
-	middle-end/87099, middle-end/87138, other/86992,
-	rtl-optimization/87065, sanitizer/86022, target/86386, target/86640,
-	target/86662, target/86820, target/87014, target/87198,
-	testsuite/86153, tree-optimization/80925, tree-optimization/85859,
-	tree-optimization/86816, tree-optimization/86835,
-	tree-optimization/86871, tree-optimization/86914,
-	tree-optimization/86927, tree-optimization/86945,
-	tree-optimization/87074
-
-* Wed Aug  1 2018 Jakub Jelinek <jakub@redhat.com> 8.2.1-2
-- update from the 8 branch
-  - PRs bootstrap/86724, c/85704, c/86617, libstdc++/84654, libstdc++/85672,
-	libstdc++/86734, sanitizer/86759, target/86511, target/86612,
-	target/86651
-
-* Thu Jul 26 2018 Jakub Jelinek <jakub@redhat.com> 8.2.1-1
-- update from the 8 branch
-  - GCC 8.2 release
-  - PRs c++/3698, c++/86208, c++/86374, c++/86480, c/86453, debug/86452,
-	debug/86457, fortran/83183, fortran/83184, fortran/86325,
-	fortran/86417, fortran/86421, middle-end/85602, middle-end/85974,
-	middle-end/86076, middle-end/86202, middle-end/86539,
-	middle-end/86542, middle-end/86627, middle-end/86660, target/84829,
-	target/86414, tree-optimization/85935, tree-optimization/86274,
-	tree-optimization/86514
-- add annobin notes to crt*.o and libgcc (#1574936)
-- drop -mcet option alias hack for f29+
-
-* Thu Jul 12 2018 Jakub Jelinek <jakub@redhat.com> 8.1.1-5
-- update from the 8 branch
-  - PRs c++/86320, c++/86378, c++/86398, c++/86400, debug/86064,
-	fortran/82865, fortran/82969, fortran/86242, hsa/86371,
-	libstdc++/83982, libstdc++/84087, libstdc++/85098, libstdc++/85671,
-	libstdc++/86127, libstdc++/86272, libstdc++/86292, libstdc++/86398,
-	sanitizer/86406, target/85904, target/86285, tree-optimization/86492
-
-* Fri Jun 29 2018 Jakub Jelinek <jakub@redhat.com> 8.1.1-4
-- make sure rs6000-modes.h is installed for plugins (#1596407)
-
-* Tue Jun 26 2018 Jakub Jelinek <jakub@redhat.com> 8.1.1-3
-- update from the 8 branch
-  - PRs c++/86182, c++/86219, c++/86291, fortran/82972, fortran/83088,
-	fortran/83118, fortran/85851, libgcc/86213, libstdc++/81092,
-	libstdc++/86112, libstdc++/86138, rtl-optimization/85645,
-	target/85358, target/85657, target/85994, target/86197, target/86222,
-	target/86314, tree-optimization/85989
-
-* Wed Jun 20 2018 Jakub Jelinek <jakub@redhat.com> 8.1.1-2
-- update from the 8 branch
-  - PRs ada/85540, ada/85635, bootstrap/85921, c++/61806, c++/80485,
-	c++/81060, c++/81420, c++/85305, c++/85618, c++/85634, c++/85646,
-	c++/85659, c++/85662, c++/85695, c++/85706, c++/85710, c++/85731,
-	c++/85739, c++/85761, c++/85764, c++/85765, c++/85782, c++/85792,
-	c++/85807, c++/85815, c++/85842, c++/85847, c++/85864, c++/85866,
-	c++/85873, c++/85912, c++/85952, c++/85963, c++/85976, c++/86025,
-	c++/86060, c++/86094, c++/86147, c++/86200, c++/86210, c/82063,
-	c/85623, c/85696, c/86093, debug/86194, fortran/38351, fortran/44491,
-	fortran/49636, fortran/63514, fortran/66694, fortran/68846,
-	fortran/70864, fortran/70870, fortran/78278, fortran/78571,
-	fortran/80657, fortran/82275, fortran/82617, fortran/82923,
-	fortran/85138, fortran/85507, fortran/85521, fortran/85542,
-	fortran/85543, fortran/85631, fortran/85641, fortran/85687,
-	fortran/85701, fortran/85702, fortran/85703, fortran/85742,
-	fortran/85779, fortran/85780, fortran/85786, fortran/85816,
-	fortran/85895, fortran/85975, fortran/85981, fortran/85996,
-	fortran/86045, fortran/86051, fortran/86059, fortran/86110, go/85630,
-	ipa/85655, libgfortran/85840, libgfortran/85906, libgfortran/86070,
-	libstdc++/67554, libstdc++/82644, libstdc++/82966, libstdc++/83891,
-	libstdc++/84159, libstdc++/85632, libstdc++/85642, libstdc++/85812,
-	libstdc++/85818, libstdc++/85930, libstdc++/85951, libstdc++/86008,
-	libstdc++/86169, middle-end/85567, middle-end/85588, middle-end/85627,
-	middle-end/85643, middle-end/85874, middle-end/85878,
-	middle-end/86095, middle-end/86122, middle-end/86123,
-	middle-end/86139, other/77609, rtl-optimization/85638,
-	rtl-optimization/86108, sanitizer/85556, sanitizer/85835,
-	sanitizer/86012, target/63177, target/81497, target/85345,
-	target/85591, target/85606, target/85658, target/85683, target/85684,
-	target/85698, target/85733, target/85755, target/85756, target/85829,
-	target/85900, target/85903, target/85945, target/85950, target/85984,
-	target/86003, target/86048, testsuite/85586, tree-optimization/85597,
-	tree-optimization/85615, tree-optimization/85712,
-	tree-optimization/85793, tree-optimization/85814,
-	tree-optimization/85822, tree-optimization/85863,
-	tree-optimization/85934, tree-optimization/85964,
-	tree-optimization/86038, tree-optimization/86114,
-	tree-optimization/86231
-
-* Tue Jun 19 2018 Miro Hrončok <mhroncok@redhat.com> 8.1.1-1.1
-- rebuilt for Python 3.7
-
-* Wed May  2 2018 Jakub Jelinek <jakub@redhat.com> 8.1.1-1
-- update from the 8 branch
-  - GCC 8.1 release
-  - PRs c++/85545, c++/85553, c++/85580, c++/85587, ipa/85549, libgcc/85532,
-	target/85473, target/85519, tree-optimization/85529,
-	tree-optimization/85586, web/85578
-
-* Wed Apr 25 2018 Jakub Jelinek <jakub@redhat.com> 8.0.1-0.23
-- update from the trunk and 8 branch
-  - GCC 8.1 rc1
-  - PR bootstrap/85490, c++/49171, c++/85437, fortran/85520, target/85512
-- include movdirintrin.h header on x86 (#1571808)
-
-* Tue Apr 24 2018 Jakub Jelinek <jakub@redhat.com> 8.0.1-0.22
-- update from the trunk
-  - PRs c++/69560, c++/70808, c++/80290, c++/84463, c++/84611, c++/84630,
-	c++/85032, c++/85039, c++/85112, c++/85258, c++/85356, c++/85385,
-	c++/85462, c++/85464, c++/85470, c/85365, debug/83157, debug/84637,
-	debug/85302, fortran/81773, fortran/83606, fortran/85387, ipa/84149,
-	ipa/85329, ipa/85391, ipa/85421, jit/85384, libgcc/85334,
-	libgcc/85379, libgomp/85463, libstdc++/84442, libstdc++/85442,
-	lto/71991, lto/81968, lto/85339, lto/85371, lto/85391, lto/85405,
-	middle-end/81657, middle-end/84955, middle-end/85414,
-	middle-end/85455, middle-end/85475, middle-end/85496, objc/85476,
-	rtl-optimization/79916, rtl-optimization/83852,
-	rtl-optimization/84566, rtl-optimization/84659,
-	rtl-optimization/85342, rtl-optimization/85354,
-	rtl-optimization/85376, rtl-optimization/85393,
-	rtl-optimization/85423, rtl-optimization/85431, sanitizer/85230,
-	sanitizer/85389, target/81084, target/83402, target/83660,
-	target/84301, target/84331, target/85080, target/85238, target/85261,
-	target/85281, target/85287, target/85291, target/85293, target/85296,
-	target/85321, target/85328, target/85347, target/85388, target/85397,
-	target/85403, target/85404, target/85417, target/85424, target/85430,
-	target/85445, target/85456, target/85469, target/85485, target/85489,
-	target/85491, target/85503, target/85508, target/85511,
-	testsuite/85326, testsuite/85346, testsuite/85483,
-	tree-optimization/82965, tree-optimization/83991,
-	tree-optimization/84737, tree-optimization/85331,
-	tree-optimization/85446, tree-optimization/85467,
-	tree-optimization/85478
-- temporarily readd -mcet as alias to -mshstk
-
-* Tue Apr 10 2018 Jakub Jelinek <jakub@redhat.com> 8.0.1-0.21
-- update from the trunk
-  - PRs c++/24314, c++/64095, c++/65923, c++/80026, c++/80956, c++/82152,
-	c++/83808, c++/84221, c++/84269, c++/84606, c++/84632, c++/84665,
-	c++/84768, c++/84791, c++/84792, c++/84936, c++/84938, c++/84943,
-	c++/84968, c++/84973, c++/84979, c++/85006, c++/85021, c++/85027,
-	c++/85028, c++/85049, c++/85060, c++/85061, c++/85062, c++/85067,
-	c++/85068, c++/85076, c++/85077, c++/85092, c++/85093, c++/85108,
-	c++/85110, c++/85113, c++/85118, c++/85133, c++/85134, c++/85135,
-	c++/85136, c++/85140, c++/85141, c++/85146, c++/85147, c++/85148,
-	c++/85149, c++/85194, c++/85200, c++/85208, c++/85209, c++/85210,
-	c++/85214, c++/85215, c++/85227, c++/85228, c++/85240, c++/85242,
-	c++/85256, c++/85262, c++/85264, c++/85277, c++/85279, c++/85285,
-	c++/85312, c/85094, debug/65821, debug/85252, fortran/42651,
-	fortran/51260, fortran/66709, fortran/69497, fortran/70068,
-	fortran/83064, fortran/84924, fortran/85083, fortran/85084,
-	fortran/85102, fortran/85111, fortran/85130, fortran/85313, gas/22318,
-	inline-asm/84985, inline-asm/85172, ipa/84947, libfortran/85166,
-	libfortran/85253, libstdc++/85183, libstdc++/85222, lto/84995,
-	lto/85078, lto/85176, lto/85248, middle-end/82976, middle-end/84067,
-	middle-end/85090, middle-end/85180, middle-end/85195,
-	middle-end/85244, other/84819, other/85161, rtl-optimization/80463,
-	rtl-optimization/83480, rtl-optimization/83530,
-	rtl-optimization/83913, rtl-optimization/83962,
-	rtl-optimization/83972, rtl-optimization/84058,
-	rtl-optimization/84872, rtl-optimization/84878,
-	rtl-optimization/85167, sanitizer/85081, sanitizer/85174,
-	sanitizer/85213, target/80546, target/81863, target/83009,
-	target/83315, target/83822, target/84041, target/84413, target/84912,
-	target/84914, target/85044, target/85056, target/85073, target/85095,
-	target/85100, target/85126, target/85169, target/85173, target/85177,
-	target/85193, target/85196, target/85203, target/85204, target/85255,
-	testsuite/82847, testsuite/83462, testsuite/84004, testsuite/85066,
-	testsuite/85154, testsuite/85189, testsuite/85190, testsuite/85191,
-	tree-optimization/80021, tree-optimization/82004,
-	tree-optimization/84005, tree-optimization/84818,
-	tree-optimization/85063, tree-optimization/85082,
-	tree-optimization/85156, tree-optimization/85168,
-	tree-optimization/85257, tree-optimization/85284,
-	tree-optimization/85286
-- fix combine ICE with -g (PR rtl-optimization/85300)
-
-* Sat Mar 24 2018 Jakub Jelinek <jakub@redhat.com> 8.0.1-0.20
-- update from the trunk
-  - PRs ada/85007, ada/85036, bootstrap/84856, c++/71251, c++/71638,
-	c++/71834, c++/71965, c++/78489, c++/81311, c++/84610, c++/84642,
-	c++/84729, c++/84789, c++/84804, c++/84812, c++/84835, c++/84836,
-	c++/84850, c++/84854, c++/84892, c++/84925, c++/84927, c++/84937,
-	c++/84942, c++/84961, c++/84962, c++/84970, c++/84972, c++/84978,
-	c++/84994, c++/85008, c++/85015, c++/85033, c++/85045, c/80778,
-	c/84953, c/84999, debug/84875, debug/85020, fortran/65453,
-	fortran/77414, fortran/79929, fortran/84615, fortran/84922,
-	fortran/84931, fortran/84957, fortran/85001, inline-asm/84941,
-	inline-asm/85022, inline-asm/85030, inline-asm/85034, ipa/84825,
-	ipa/84963, libstdc++/77691, libstdc++/84998, rtl-optimization/84635,
-	rtl-optimization/84643, rtl-optimization/84989, sanitizer/78651,
-	sanitizer/84761, sanitizer/85018, sanitizer/85029, target/81647,
-	target/82518, target/82989, target/83789, target/84760, target/84826,
-	target/84838, target/84845, target/84945, target/84952, target/84954,
-	target/84986, target/84988, target/84990, target/85025, target/85026,
-	tree-optimization/83126, tree-optimization/84811,
-	tree-optimization/84859, tree-optimization/84913,
-	tree-optimization/84929, tree-optimization/84933,
-	tree-optimization/84946, tree-optimization/84956,
-	tree-optimization/84960, tree-optimization/84969,
-	tree-optimization/84982
-  - fix std::less etc. (#1559171, PR libstdc++/85040)
-
-* Sat Mar 17 2018 Jakub Jelinek <jakub@redhat.com> 8.0.1-0.19
-- update from the trunk
-  - PRs ada/82813, c++/79085, c++/79937, c++/80227, c++/81236, c++/82336,
-	c++/82410, c++/82565, c++/83911, c++/83916, c++/83937, c++/84222,
-	c++/84720, c++/84798, c++/84801, c++/84820, c++/84839, c++/84843,
-	c++/84874, c++/84906, c/46921, c/84852, c/84853, c/84873, c/84909,
-	c/84910, fortran/61775, fortran/69395, fortran/78741, ipa/84658,
-	ipa/84722, ipa/84805, ipa/84833, libgfortran/84880, libstdc++/78420,
-	libstdc++/83662, libstdc++/84773, lto/84805, middle-end/84831,
-	middle-end/84834, sanitizer/83392, target/68256, target/78090,
-	target/83451, target/84574, target/84711, target/84743, target/84827,
-	target/84828, target/84844, target/84860, target/84876, target/84899,
-	target/84902, tree-optimization/84725, tree-optimization/84830,
-	tree-optimization/84841
-
-* Mon Mar 12 2018 Jakub Jelinek <jakub@redhat.com> 8.0.1-0.18
-- update from the trunk
-  - PRs c++/84355, c++/84802, c++/84813, debug/58150, fortran/83939,
-	fortran/84546, rtl-optimization/84780, tree-optimization/83456,
-	tree-optimization/84777, tree-optimization/84803
-- add pconfigintrin.h and wbnoinvdintrin.h headers (#1554279)
-- fix -march=knl from emitting AVX512VL instructions (PR target/84786)
-- fix C++ constexpr RANGE_EXPR splitting (PR c++/84808)
-
-* Sat Mar 10 2018 Jakub Jelinek <jakub@redhat.com> 8.0.1-0.17
-- update from the trunk
-  - PRs c++/61135, c++/61358, c++/67370, c++/70468, c++/71169, c++/71464,
-	c++/71546, c++/71569, c++/71784, c++/71832, c++/79410, c++/80598,
-	c++/81812, c++/82022, c++/83503, c++/83692, c++/83871, c++/84015,
-	c++/84076, c++/84171, c++/84231, c++/84294, c++/84325, c++/84424,
-	c++/84426, c++/84434, c++/84441, c++/84447, c++/84489, c++/84492,
-	c++/84493, c++/84497, c++/84520, c++/84533, c++/84537, c++/84540,
-	c++/84551, c++/84556, c++/84557, c++/84558, c++/84559, c++/84560,
-	c++/84578, c++/84582, c++/84590, c++/84593, c++/84596, c++/84602,
-	c++/84609, c++/84618, c++/84639, c++/84662, c++/84663, c++/84664,
-	c++/84684, c++/84686, c++/84694, c++/84702, c++/84704, c++/84707,
-	c++/84708, c++/84724, c++/84726, c++/84733, c++/84752, c++/84767,
-	c++/84770, c++/84785, c/84721, debug/83917, debug/84404, debug/84408,
-	debug/84456, debug/84545, debug/84620, debug/84645, fortran/30792,
-	fortran/32957, fortran/51434, fortran/56667, fortran/59781,
-	fortran/64107, fortran/64124, fortran/66128, fortran/70409,
-	fortran/71085, fortran/78238, fortran/80965, fortran/83148,
-	fortran/83149, fortran/83633, fortran/83901, fortran/84219,
-	fortran/84346, fortran/84506, fortran/84509, fortran/84511,
-	fortran/84519, fortran/84523, fortran/84538, fortran/84565,
-	fortran/84697, fortran/84734, gcov-profile/84548, gcov-profile/84735,
-	inline-asm/84625, inline-asm/84683, inline-asm/84742, ipa/83983,
-	ipa/84628, jit/64089, jit/84288, libstdc++/84532, libstdc++/84601,
-	libstdc++/84671, libstdc++/84769, middle-end/84552, middle-end/84607,
-	middle-end/84723, preprocessor/84517, rtl-optimization/81611,
-	rtl-optimization/83327, rtl-optimization/83496,
-	rtl-optimization/84528, rtl-optimization/84682, sanitizer/70875,
-	sanitizer/82484, target/52991, target/56540, target/81572,
-	target/82005, target/82411, target/82851, target/83193, target/83335,
-	target/83399, target/83712, target/83969, target/84039, target/84176,
-	target/84264, target/84277, target/84521, target/84524, target/84530,
-	target/84534, target/84564, target/84575, target/84614, target/84700,
-	target/84710, target/84748, target/84763, target/84772, target/84807,
-	testsuite/80551, testsuite/84597, testsuite/84617, translation/84207,
-	tree-optimization/83519, tree-optimization/84114,
-	tree-optimization/84178, tree-optimization/84427,
-	tree-optimization/84466, tree-optimization/84468,
-	tree-optimization/84480, tree-optimization/84486,
-	tree-optimization/84512, tree-optimization/84526,
-	tree-optimization/84584, tree-optimization/84634,
-	tree-optimization/84650, tree-optimization/84670,
-	tree-optimization/84687, tree-optimization/84739,
-	tree-optimization/84740, tree-optimization/84746,
-	tree-optimization/84775
-- for f29+ require binutils >= 2.30 (#1552529)
-
-* Thu Feb 22 2018 Jakub Jelinek <jakub@redhat.com> 8.0.1-0.16
-- update from the trunk
-  - PRs c++/77655, c++/84454, c++/84496, c/84229, target/84502
-  - fix store-merging (#1547495, PR tree-optimization/84503)
-
-* Tue Feb 20 2018 Jakub Jelinek <jakub@redhat.com> 8.0.1-0.15
-- update from the trunk
-  - PRs c++/84348, c++/84429, c++/84430, c++/84444, c++/84445, c++/84446,
-	c++/84448, c++/84449, c++/84455, c++/84488, c/81272, c/84310,
-	driver/83193, fortran/35339, fortran/48890, fortran/83823,
-	middle-end/79257, middle-end/82004, middle-end/82123,
-	middle-end/84095, middle-end/84406, other/80589, sanitizer/82183,
-	target/79747, target/84148, target/84460, tree-optimization/81592,
-	tree-optimization/82491, tree-optimization/84419,
-	tree-optimization/84452
-- fix strlen value range computation (#1546964, PR tree-optimization/84478)
-
-* Sun Feb 18 2018 Jakub Jelinek <jakub@redhat.com> 8.0.1-0.14
-- update from the trunk
-  - PRs ada/84277, bootstrap/82939, bootstrap/84405, c++/79064, c++/79626,
-	c++/81853, c++/82468, c++/82664, c++/82764, c++/83227, c++/83835,
-	c++/83990, c++/84045, c++/84080, c++/84151, c++/84192, c++/84263,
-	c++/84281, c++/84314, c++/84330, c++/84333, c++/84338, c++/84341,
-	c++/84350, c++/84364, c++/84368, c++/84375, c++/84376, c++/84420,
-	c++/84421, c/82210, c/84108, c/84305, debug/84319, debug/84342,
-	fortran/35299, fortran/54223, fortran/68746, fortran/80945,
-	fortran/84074, fortran/84270, fortran/84273, fortran/84276,
-	fortran/84313, fortran/84354, fortran/84381, fortran/84385,
-	fortran/84389, fortran/84409, fortran/84418, ipa/84425,
-	libgfortran/84389, libgfortran/84412, libstdc++/81797,
-	middle-end/83665, middle-end/84309, other/82368, preprocessor/83063,
-	preprocessor/83708, rtl-optimization/70023, rtl-optimization/81443,
-	rtl-optimization/83723, rtl-optimization/84169, sanitizer/84307,
-	sanitizer/84340, target/79242, target/81535, target/82862,
-	target/83758, target/83760, target/83831, target/83984, target/84220,
-	target/84239, target/84266, target/84272, target/84279, target/84335,
-	target/84336, target/84359, target/84365, target/84370, target/84372,
-	tree-optimization/83698, tree-optimization/84016,
-	tree-optimization/84190, tree-optimization/84321,
-	tree-optimization/84334, tree-optimization/84339,
-	tree-optimization/84357, tree-optimization/84383,
-	tree-optimization/84399, tree-optimization/84417
-
-* Sat Feb 10 2018 Jakub Jelinek <jakub@redhat.com> 8.0.1-0.13
-- update from the trunk
-  - PRs c++/77522, c++/80567, c++/81610, c++/81917, c++/83204, c++/83659,
-	c++/83806, c++/84082, c++/84182, c++/84296, c/84293, fortran/56691,
-	fortran/68560, fortran/82049, fortran/82994, lto/84212, lto/84213,
-	middle-end/84237, rtl-optimization/57193, rtl-optimization/83459,
-	rtl-optimization/84068, rtl-optimization/84308, sanitizer/84285,
-	target/81143, target/83008, target/83926, target/84113, target/84226,
-	target/84300, target/PR84295, tree-optimization/84037,
-	tree-optimization/84136, tree-optimization/84224,
-	tree-optimization/84232, tree-optimization/84233,
-	tree-optimization/84238, tree-optimization/84265,
-	tree-optimization/84278
-- temporarily revert LVU stuff, until it settles down
-
-* Wed Feb  7 2018 Jakub Jelinek <jakub@redhat.com> 8.0.1-0.12
-- update from the trunk
-  - PRs c++/71662, c++/82782, c++/83796, c++/84059, c++/84125, c++/84126,
-	c++/84160, c++/84181, c/81779, fortran/83344, fortran/83705,
-	fortran/83975, fortran/84094, fortran/84115, fortran/84141,
-	fortran/84155, gcov-profile/83879, gcov-profile/84137, libgomp/84217,
-	lto/81004, middle-end/79966, rtl-optimization/84123,
-	rtl-optimization/84157, target/56010, target/79975, target/82641,
-	target/83370, target/83743, target/84066, target/84089, target/84145,
-	target/84154, target/84209, target/84243, target/84248, tearget/83845,
-	testsuite/52641, testsuite/83846, testsuite/84243,
-	tree-optimization/81635, tree-optimization/81661,
-	tree-optimization/83369, tree-optimization/84117,
-	tree-optimization/84204, tree-optimization/84205,
-	tree-optimization/84223, tree-optimization/84225,
-	tree-optimization/84228,
-  - fix dom2 floating point miscompilation (#1542124,
-    PR tree-optimization/84235)
-- fix go provides/requires (#1541639)
-- fix var-tracking ICE on aarch64 (#1541670, PR debug/84252)
-
-* Tue Feb  6 2018 Florian Weimer <fweimer@redhat.com> - 8.0.1-0.11
-- use generic tuning for armhfp
-
-* Mon Feb  5 2018 Richard W.M. Jones <rjones@redhat.com> 8.0.1-0.10
-- disable multilib on riscv64.
-
-* Thu Feb  1 2018 Jeff Law <law@redhat.com> 8.0.1-0.9
-- fix -fstack-clash-protection codegen issue on 32 bit x86
-  (#1540221, PR target/84128)
-
-* Wed Jan 31 2018 Jakub Jelinek <jakub@redhat.com> 8.0.1-0.8
-- update from the trunk
-  - PRs c++/83993, c++/84092, c++/84138, c/84100, fortran/84088,
-	fortran/84116, fortran/84134, lto/84105, preprocessor/69869,
-	rtl-optimization/84071, target/82444, target/83618, target/84064,
-	tree-optimization/64946, tree-optimization/84132
-- fix ICE with CET and -g (PR target/84146)
-
-* Tue Jan 30 2018 Jakub Jelinek <jakub@redhat.com> 8.0.1-0.7
-- update from the trunk
-  - PRs bootstrap/80867, bootstrap/84017, c++/68810, c++/83924, c++/83942,
-	c++/83996, c++/84091, c++/84098, c/83966, fortran/84073,
-	fortran/84133, ipa/81360, ipa/83179, libgomp/84096, libstdc++/83658,
-	lto/83954, rtl-optimization/83986, target/40411, target/58684,
-	target/83828, target/84112, testsuite/81010, tree-optimization/81611,
-	tree-optimization/83008, tree-optimization/84057,
-	tree-optimization/84086, tree-optimization/84111
-- fix fortran debuginfo (PR debug/84131)
-
-* Sat Jan 27 2018 Jakub Jelinek <jakub@redhat.com> 8.0.1-0.6
-- update from the trunk
-  - PRs c++/82249, c++/82514, c++/83921, c++/83947, c++/83956, c++/83974,
-	c++/84031, c++/84036, c/83989, diagnostic/84034, fortran/37577,
-	fortran/83866, fortran/83898, fortran/83998, fortran/84065, jit/81672,
-	jit/82846, libstdc++/81076, middle-end/83055, middle-end/83977,
-	middle-end/84000, middle-end/84040, other/68239,
-	rtl-optimization/83985, rtl-optimization/84003, sanitizer/83987,
-	target/68467, target/81352, target/81550, target/81763, target/83013,
-	target/83589, target/83905, target/83994, target/84014, target/84028,
-	target/84033, testsuite/83889, tree-optimization/81082,
-	tree-optimization/82819, tree-optimization/83176,
-	tree-optimization/83979
-
-* Tue Jan 23 2018 Jakub Jelinek <jakub@redhat.com> 8.0.1-0.5
-- update from the trunk
-  - PRs c++/81933, c++/82882, c++/83720, c++/83895, c++/83918, c++/83958,
-	c++/83978, c++/83988, fortran/78534, fortran/83704, lto/81440,
-	lto/83452, target/80870, target/83862, target/83946, testsuite/77734,
-	testsuite/83888, tree-optimization/69452, tree-optimization/82604,
-	tree-optimization/83081, tree-optimization/83510,
-	tree-optimization/83940, tree-optimization/83957,
-	tree-optimization/83963, tree-optimization/83965
-- fix strlen pass ICE (PR tree-optimization/83896)
-
-* Sat Jan 20 2018 Jakub Jelinek <jakub@redhat.com> 8.0.1-0.4
-- update from the trunk
-  - PRs c++/78344, c++/81013, c++/81054, c++/81167, c++/82461, c++/83160,
-	c++/83287, c++/83824, c++/83897, c++/83919, c/61240, debug/81570,
-	debug/83728, fortran/80768, fortran/83864, fortran/83874,
-	fortran/83900, ipa/82256, ipa/83051, ipa/83619, middle-end/83945,
-	middle_end/79538, other/70268, rtl-optimization/83147,
-	sanitizer/81715, sanitizer/82825, target/65578, target/83790,
-	target/83920, target/83930, testsuite/83882, testsuite/83883,
-	testsuite/83934, tree-optimization/83887, tree-optimization/83914,
-	tree-optimization/83922
-- aarch64 -fstack-clash-protection support
-
-* Wed Jan 17 2018 Jakub Jelinek <jakub@redhat.com> 8.0.1-0.3
-- update from the trunk
-  - PRs c++/72801, c++/81067, c++/81843, c++/83714, c++/83739, c++/83799,
-	c++/83814, c++/83902, lto/83121, middle-end/83884,
-	rtl-optimization/80481, rtl-optimization/83771, target/79041,
-	target/82964, target/83546, testsuite/77734, tree-optimization/81184
-
-* Tue Jan 16 2018 Jakub Jelinek <jakub@redhat.com> 8.0.1-0.2
-- update from the trunk
-  - PRs c++/83588, c++/83817, c++/83825, c/83844, fortran/54613,
-	fortran/82257, libgomp/83590, libstdc++/83833, libstdc++/83834,
-	middle-end/83837, rtl-optimization/83213, rtl-optimization/86620,
-	target/83839, target/83858, testsuite/82132, testsuite/83869,
-	tree-optimization/83843, tree-optimization/83847,
-	tree-optimization/83857, tree-optimization/83867
-
-* Mon Jan 15 2018 Jakub Jelinek <jakub@redhat.com> 8.0.1-0.1
+* Sat Jan 19 2019 Jakub Jelinek <jakub@redhat.com> 9.0.1-0.3
+- update from trunk
+  - PRs c++/86205, c++/86740, c++/86926, c++/88699, c++/88875, c/88664,
+	fortran/88871, fortran/88898, fortran/88902, libbacktrace/88890,
+	libstdc++/87514, libstdc++/87520, libstdc++/88782, middle-end/88273,
+	middle-end/88587, target/85596, target/88799, target/88892,
+	tree-optimization/88800, tree-optimization/88903
+- fix transfer_intrinsic_3.f90 miscompilation on ppc64le and s390x
+  (PR tree-optimization/88044)
+- fix -fsanitize=pointer-{compare,subtract} in C++ templates
+  (PR sanitizer/88901)
+- add Obsoletes for libmpx and libmpx-static
+
+* Thu Jan 17 2019 Jakub Jelinek <jakub@redhat.com> 9.0.1-0.2
+- update from trunk
+  - PRs c++/78244, c++/86610, c++/86648, c++/87768, c++/87882, c++/88114,
+	c++/88146, c++/88312, c++/88613, c++/88692, c++/88795, c++/88825,
+	c++/88830, c++/88866, c/51628, d/87824, debug/88046, fortran/35031,
+	fortran/43136, fortran/57992, fortran/59345, fortran/61765,
+	fortran/81849, fortran/88803, gcov-profile/88263, inline-asm/52813,
+	ipa/88788, libbacktrace/82857, libfortran/88776, libfortran/88807,
+	libstdc++/83306, libstdc++/88738, libstdc++/88802, libstdc++/88811,
+	libstdc++/88881, libstdc++/88884, lto/86736, lto/88733,
+	middle-end/85956, middle-end/88703, rtl-optimization/87305,
+	rtl-optimization/88796, rtl-optimization/88870, target/80547,
+	target/85381, target/85486, target/88614, target/86891, target/87306,
+	target/88489, target/88638, target/88682, target/88777, target/88794,
+	target/88850, target/88851, target/88861, tree-optimization/86214,
+	tree-optimization/88693, tree-optimization/88775,
+	tree-optimization/88855
+- fix arm bootstrap failure (PR bootstrap/88714)
+- fix <arm_neon.h> on aarch64 and arm (PR target/88734)
+- default to -shared-libphobos for gdc
+
+* Fri Jan 11 2019 Jakub Jelinek <jakub@redhat.com> 9.0.1-0.1
 - new package

diff --git a/gcc8-Wno-format-security.patch b/gcc8-Wno-format-security.patch
deleted file mode 100644
index cb21e5d..0000000
--- a/gcc8-Wno-format-security.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-2017-02-25  Jakub Jelinek  <jakub@redhat.com>
-
-	* configure.ac: When adding -Wno-format, also add -Wno-format-security.
-	* configure: Regenerated.
-
---- gcc/configure.ac.jj	2017-02-13 12:20:53.000000000 +0100
-+++ gcc/configure.ac	2017-02-25 12:42:32.859175403 +0100
-@@ -481,7 +481,7 @@ AC_ARG_ENABLE(build-format-warnings,
-   AS_HELP_STRING([--disable-build-format-warnings],[don't use -Wformat while building GCC]),
-   [],[enable_build_format_warnings=yes])
- AS_IF([test $enable_build_format_warnings = no],
--      [wf_opt=-Wno-format],[wf_opt=])
-+      [wf_opt="-Wno-format -Wno-format-security"],[wf_opt=])
- ACX_PROG_CXX_WARNING_OPTS(
- 	m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings ],
- 		       [-Wcast-qual $wf_opt])), [loose_warn])
---- gcc/configure.jj	2017-02-13 12:20:52.000000000 +0100
-+++ gcc/configure	2017-02-25 12:42:50.041946391 +0100
-@@ -6647,7 +6647,7 @@ else
- fi
- 
- if test $enable_build_format_warnings = no; then :
--  wf_opt=-Wno-format
-+  wf_opt="-Wno-format -Wno-format-security"
- else
-   wf_opt=
- fi

diff --git a/gcc8-foffload-default.patch b/gcc8-foffload-default.patch
deleted file mode 100644
index 771e1e0..0000000
--- a/gcc8-foffload-default.patch
+++ /dev/null
@@ -1,117 +0,0 @@
-2017-01-20  Jakub Jelinek  <jakub@redhat.com>
-
-	* gcc.c (offload_targets_default): New variable.
-	(process_command): Set it if -foffload is defaulted.
-	(driver::maybe_putenv_OFFLOAD_TARGETS): Add OFFLOAD_TARGET_DEFAULT=1
-	into environment if -foffload has been defaulted.
-	* lto-wrapper.c (OFFLOAD_TARGET_DEFAULT_ENV): Define.
-	(compile_images_for_offload_targets): If OFFLOAD_TARGET_DEFAULT
-	is in the environment, don't fail if corresponding mkoffload
-	can't be found.  Free and clear offload_names if no valid offload
-	is found.
-libgomp/
-	* target.c (gomp_load_plugin_for_device): If a plugin can't be
-	dlopened, assume it has no devices silently.
-
---- gcc/gcc.c.jj	2017-01-17 10:28:40.000000000 +0100
-+++ gcc/gcc.c	2017-01-20 16:26:29.649962902 +0100
-@@ -290,6 +290,10 @@ static const char *spec_host_machine = D
- 
- static char *offload_targets = NULL;
- 
-+/* Set to true if -foffload has not been used and offload_targets
-+   is set to the configured in default.  */
-+static bool offload_targets_default;
-+
- /* Nonzero if cross-compiling.
-    When -b is used, the value comes from the `specs' file.  */
- 
-@@ -4457,7 +4461,10 @@ process_command (unsigned int decoded_op
-   /* If the user didn't specify any, default to all configured offload
-      targets.  */
-   if (ENABLE_OFFLOADING && offload_targets == NULL)
--    handle_foffload_option (OFFLOAD_TARGETS);
-+    {
-+      handle_foffload_option (OFFLOAD_TARGETS);
-+      offload_targets_default = true;
-+    }
- 
-   if (output_file
-       && strcmp (output_file, "-") != 0
-@@ -7693,6 +7700,8 @@ driver::maybe_putenv_OFFLOAD_TARGETS ()
-       obstack_grow (&collect_obstack, offload_targets,
- 		    strlen (offload_targets) + 1);
-       xputenv (XOBFINISH (&collect_obstack, char *));
-+      if (offload_targets_default)
-+	  xputenv ("OFFLOAD_TARGET_DEFAULT=1");
-     }
- 
-   free (offload_targets);
---- gcc/lto-wrapper.c.jj	2017-01-01 12:45:34.000000000 +0100
-+++ gcc/lto-wrapper.c	2017-01-20 16:34:18.294016997 +0100
-@@ -52,6 +52,7 @@ along with GCC; see the file COPYING3.
- /* Environment variable, used for passing the names of offload targets from GCC
-    driver to lto-wrapper.  */
- #define OFFLOAD_TARGET_NAMES_ENV	"OFFLOAD_TARGET_NAMES"
-+#define OFFLOAD_TARGET_DEFAULT_ENV	"OFFLOAD_TARGET_DEFAULT"
- 
- enum lto_mode_d {
-   LTO_MODE_NONE,			/* Not doing LTO.  */
-@@ -790,8 +791,10 @@ compile_images_for_offload_targets (unsi
-   if (!target_names)
-     return;
-   unsigned num_targets = parse_env_var (target_names, &names, NULL);
-+  const char *target_names_default = getenv (OFFLOAD_TARGET_DEFAULT_ENV);
- 
-   int next_name_entry = 0;
-+  bool hsa_seen = false;
-   const char *compiler_path = getenv ("COMPILER_PATH");
-   if (!compiler_path)
-     goto out;
-@@ -804,18 +807,32 @@ compile_images_for_offload_targets (unsi
-       /* HSA does not use LTO-like streaming and a different compiler, skip
- 	 it. */
-       if (strcmp (names[i], "hsa") == 0)
--	continue;
-+	{
-+	  hsa_seen = true;
-+	  continue;
-+	}
- 
-       offload_names[next_name_entry]
- 	= compile_offload_image (names[i], compiler_path, in_argc, in_argv,
- 				 compiler_opts, compiler_opt_count,
- 				 linker_opts, linker_opt_count);
-       if (!offload_names[next_name_entry])
--	fatal_error (input_location,
--		     "problem with building target image for %s\n", names[i]);
-+	{
-+	  if (target_names_default != NULL)
-+	    continue;
-+	  fatal_error (input_location,
-+		       "problem with building target image for %s\n",
-+		       names[i]);
-+	}
-       next_name_entry++;
-     }
- 
-+  if (next_name_entry == 0 && !hsa_seen)
-+    {
-+      free (offload_names);
-+      offload_names = NULL;
-+    }
-+
-  out:
-   free_array_of_ptrs ((void **) names, num_targets);
- }
---- libgomp/target.c.jj	2017-01-01 12:45:52.000000000 +0100
-+++ libgomp/target.c	2017-01-20 20:12:13.756710875 +0100
-@@ -2356,7 +2356,7 @@ gomp_load_plugin_for_device (struct gomp
- 
-   void *plugin_handle = dlopen (plugin_name, RTLD_LAZY);
-   if (!plugin_handle)
--    goto dl_fail;
-+    return 0;
- 
-   /* Check if all required functions are available in the plugin and store
-      their handlers.  None of the symbols can legitimately be NULL,

diff --git a/gcc8-hack.patch b/gcc8-hack.patch
deleted file mode 100644
index 515173f..0000000
--- a/gcc8-hack.patch
+++ /dev/null
@@ -1,124 +0,0 @@
---- libada/Makefile.in.jj	2009-01-14 12:07:35.000000000 +0100
-+++ libada/Makefile.in	2009-01-15 14:25:33.000000000 +0100
-@@ -66,18 +66,40 @@ libsubdir := $(libdir)/gcc/$(target_nonc
- ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR))
- ADA_RTS_SUBDIR=./rts$(subst /,_,$(MULTISUBDIR))
- 
-+DEFAULTMULTIFLAGS :=
-+ifeq ($(MULTISUBDIR),)
-+targ:=$(subst -, ,$(target))
-+arch:=$(word 1,$(targ))
-+ifeq ($(words $(targ)),2)
-+osys:=$(word 2,$(targ))
-+else
-+osys:=$(word 3,$(targ))
-+endif
-+ifeq ($(strip $(filter-out i%86 x86_64 powerpc% ppc% s390% sparc% linux%, $(arch) $(osys))),)
-+ifeq ($(shell $(CC) $(CFLAGS) -print-multi-os-directory),../lib64)
-+DEFAULTMULTIFLAGS := -m64
-+else
-+ifeq ($(strip $(filter-out s390%, $(arch))),)
-+DEFAULTMULTIFLAGS := -m31
-+else
-+DEFAULTMULTIFLAGS := -m32
-+endif
-+endif
-+endif
-+endif
-+
- # 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)" \
-+        "LDFLAGS=$(LDFLAGS) $(DEFAULTMULTIFLAGS)" \
-         "LN_S=$(LN_S)" \
-         "SHELL=$(SHELL)" \
--        "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS)" \
--        "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \
--        "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)" \
-+        "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
-+        "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
-+        "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
-         "PICFLAG_FOR_TARGET=$(PICFLAG)" \
-         "THREAD_KIND=$(THREAD_KIND)" \
-         "TRACE=$(TRACE)" \
-@@ -88,7 +110,7 @@ LIBADA_FLAGS_TO_PASS = \
-         "exeext=.exeext.should.not.be.used " \
- 	'CC=the.host.compiler.should.not.be.needed' \
- 	"GCC_FOR_TARGET=$(CC)" \
--        "CFLAGS=$(CFLAGS)"
-+        "CFLAGS=$(CFLAGS) $(DEFAULTMULTIFLAGS)"
- 
- # Rules to build gnatlib.
- .PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared osconstool
---- config-ml.in.jj	2010-06-30 09:50:44.000000000 +0200
-+++ config-ml.in	2010-07-02 21:24:17.994211151 +0200
-@@ -511,6 +511,8 @@ multi-do:
- 				ADAFLAGS="$(ADAFLAGS) $${flags}" \
- 				prefix="$(prefix)" \
- 				exec_prefix="$(exec_prefix)" \
-+				mandir="$(mandir)" \
-+				infodir="$(infodir)" \
- 				GOCFLAGS="$(GOCFLAGS) $${flags}" \
- 				CXXFLAGS="$(CXXFLAGS) $${flags}" \
- 				LIBCFLAGS="$(LIBCFLAGS) $${flags}" \
---- libcpp/macro.c.jj	2015-01-14 11:01:34.000000000 +0100
-+++ libcpp/macro.c	2015-01-14 14:22:19.286949884 +0100
-@@ -2947,8 +2947,6 @@ create_iso_definition (cpp_reader *pfile
-   cpp_token *token;
-   const cpp_token *ctoken;
-   bool following_paste_op = false;
--  const char *paste_op_error_msg =
--    N_("'##' cannot appear at either end of a macro expansion");
-   unsigned int num_extra_tokens = 0;
- 
-   /* Get the first token of the expansion (or the '(' of a
-@@ -3059,7 +3057,8 @@ create_iso_definition (cpp_reader *pfile
- 	     function-like macros, but not at the end.  */
- 	  if (following_paste_op)
- 	    {
--	      cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
-+	      cpp_error (pfile, CPP_DL_ERROR,
-+			 "'##' cannot appear at either end of a macro expansion");
- 	      return false;
- 	    }
- 	  break;
-@@ -3072,7 +3071,8 @@ create_iso_definition (cpp_reader *pfile
- 	     function-like macros, but not at the beginning.  */
- 	  if (macro->count == 1)
- 	    {
--	      cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
-+	      cpp_error (pfile, CPP_DL_ERROR,
-+			 "'##' cannot appear at either end of a macro expansion");
- 	      return false;
- 	    }
- 
---- libcpp/expr.c.jj	2015-01-14 11:01:34.000000000 +0100
-+++ libcpp/expr.c	2015-01-14 14:35:52.851002344 +0100
-@@ -672,16 +672,17 @@ cpp_classify_number (cpp_reader *pfile,
-       if ((result & CPP_N_WIDTH) == CPP_N_LARGE
- 	  && CPP_OPTION (pfile, cpp_warn_long_long))
-         {
--          const char *message = CPP_OPTION (pfile, cplusplus) 
--				? N_("use of C++11 long long integer constant")
--		                : N_("use of C99 long long integer constant");
--
- 	  if (CPP_OPTION (pfile, c99))
-             cpp_warning_with_line (pfile, CPP_W_LONG_LONG, virtual_location,
--				   0, message);
-+				   0, CPP_OPTION (pfile, cplusplus)
-+				      ? N_("use of C++11 long long integer constant")
-+				      : N_("use of C99 long long integer constant"));
-           else
-             cpp_pedwarning_with_line (pfile, CPP_W_LONG_LONG,
--				      virtual_location, 0, message);
-+				      virtual_location, 0,
-+				      CPP_OPTION (pfile, cplusplus)
-+				      ? N_("use of C++11 long long integer constant")
-+				      : N_("use of C99 long long integer constant"));
-         }
- 
-       result |= CPP_N_INTEGER;

diff --git a/gcc8-i386-libgomp.patch b/gcc8-i386-libgomp.patch
deleted file mode 100644
index 520561e..0000000
--- a/gcc8-i386-libgomp.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- libgomp/configure.tgt.jj	2008-01-10 20:53:48.000000000 +0100
-+++ libgomp/configure.tgt	2008-03-27 12:44:51.000000000 +0100
-@@ -67,7 +67,7 @@ if test $enable_linux_futex = yes; then
- 	    ;;
- 	  *)
- 	    if test -z "$with_arch"; then
--	      XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
-+	      XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
- 	    fi
- 	esac
- 	;;

diff --git a/gcc8-isl-dl.patch b/gcc8-isl-dl.patch
deleted file mode 100644
index 46d3b0d..0000000
--- a/gcc8-isl-dl.patch
+++ /dev/null
@@ -1,715 +0,0 @@
---- gcc/Makefile.in.jj	2015-06-06 10:00:25.000000000 +0200
-+++ gcc/Makefile.in	2015-11-04 14:56:02.643536437 +0100
-@@ -1046,7 +1046,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY)
- # and the system's installed libraries.
- LIBS = @LIBS@ libcommon.a $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBBACKTRACE) \
- 	$(LIBIBERTY) $(LIBDECNUMBER) $(HOST_LIBS)
--BACKENDLIBS = $(ISLLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
-+BACKENDLIBS = $(if $(ISLLIBS),-ldl) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
- 	$(ZLIB)
- # Any system libraries needed just for GNAT.
- SYSLIBS = @GNAT_LIBEXC@
-@@ -2196,6 +2196,15 @@ $(out_object_file): $(out_file)
- $(common_out_object_file): $(common_out_file)
- 	$(COMPILE) $<
- 	$(POSTCOMPILE)
-+
-+graphite%.o : \
-+  ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
-+graphite.o : \
-+  ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
-+graphite%.o : \
-+  ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
-+graphite.o : \
-+  ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
- #\f
- # Generate header and source files from the machine description,
- # and compile them.
---- gcc/graphite.h.jj	2016-01-27 12:44:06.000000000 +0100
-+++ gcc/graphite.h	2016-01-27 13:26:38.309876856 +0100
-@@ -39,6 +39,590 @@ along with GCC; see the file COPYING3.
- #include <isl/schedule_node.h>
- #include <isl/id.h>
- #include <isl/space.h>
-+#include <isl/version.h>
-+#include <dlfcn.h>
-+
-+#define DYNSYMS \
-+  DYNSYM (isl_aff_add_coefficient_si); \
-+  DYNSYM (isl_aff_free); \
-+  DYNSYM (isl_aff_get_space); \
-+  DYNSYM (isl_aff_set_coefficient_si); \
-+  DYNSYM (isl_aff_set_constant_si); \
-+  DYNSYM (isl_aff_zero_on_domain); \
-+  DYNSYM (isl_band_free); \
-+  DYNSYM (isl_band_get_children); \
-+  DYNSYM (isl_band_get_partial_schedule); \
-+  DYNSYM (isl_band_has_children); \
-+  DYNSYM (isl_band_list_free); \
-+  DYNSYM (isl_band_list_get_band); \
-+  DYNSYM (isl_band_list_get_ctx); \
-+  DYNSYM (isl_band_list_n_band); \
-+  DYNSYM (isl_band_n_member); \
-+  DYNSYM (isl_basic_map_add_constraint); \
-+  DYNSYM (isl_basic_map_project_out); \
-+  DYNSYM (isl_basic_map_universe); \
-+  DYNSYM (isl_constraint_set_coefficient_si); \
-+  DYNSYM (isl_constraint_set_constant_si); \
-+  DYNSYM (isl_ctx_alloc); \
-+  DYNSYM (isl_ctx_free); \
-+  DYNSYM (isl_equality_alloc); \
-+  DYNSYM (isl_id_alloc); \
-+  DYNSYM (isl_id_copy); \
-+  DYNSYM (isl_id_free); \
-+  DYNSYM (isl_inequality_alloc); \
-+  DYNSYM (isl_local_space_copy); \
-+  DYNSYM (isl_local_space_free); \
-+  DYNSYM (isl_local_space_from_space); \
-+  DYNSYM (isl_local_space_range); \
-+  DYNSYM (isl_map_add_constraint); \
-+  DYNSYM (isl_map_add_dims); \
-+  DYNSYM (isl_map_align_params); \
-+  DYNSYM (isl_map_apply_range); \
-+  DYNSYM (isl_map_copy); \
-+  DYNSYM (isl_map_dim); \
-+  DYNSYM (isl_map_dump); \
-+  DYNSYM (isl_map_equate); \
-+  DYNSYM (isl_map_fix_si); \
-+  DYNSYM (isl_map_flat_product); \
-+  DYNSYM (isl_map_flat_range_product); \
-+  DYNSYM (isl_map_free); \
-+  DYNSYM (isl_map_from_basic_map); \
-+  DYNSYM (isl_map_from_pw_aff); \
-+  DYNSYM (isl_map_from_union_map); \
-+  DYNSYM (isl_map_get_ctx); \
-+  DYNSYM (isl_map_get_space); \
-+  DYNSYM (isl_map_get_tuple_id); \
-+  DYNSYM (isl_map_insert_dims); \
-+  DYNSYM (isl_map_intersect); \
-+  DYNSYM (isl_map_intersect_domain); \
-+  DYNSYM (isl_map_intersect_range); \
-+  DYNSYM (isl_map_is_empty); \
-+  DYNSYM (isl_map_lex_ge); \
-+  DYNSYM (isl_map_lex_le); \
-+  DYNSYM (isl_map_n_out); \
-+  DYNSYM (isl_map_range); \
-+  DYNSYM (isl_map_set_tuple_id); \
-+  DYNSYM (isl_map_universe); \
-+  DYNSYM (isl_options_set_on_error); \
-+  DYNSYM (isl_options_set_schedule_serialize_sccs); \
-+  DYNSYM (isl_printer_set_yaml_style); \
-+  DYNSYM (isl_options_set_schedule_max_constant_term); \
-+  DYNSYM (isl_options_set_schedule_maximize_band_depth); \
-+  DYNSYM (isl_printer_free); \
-+  DYNSYM (isl_printer_print_aff); \
-+  DYNSYM (isl_printer_print_constraint); \
-+  DYNSYM (isl_printer_print_map); \
-+  DYNSYM (isl_printer_print_set); \
-+  DYNSYM (isl_printer_to_file); \
-+  DYNSYM (isl_pw_aff_add); \
-+  DYNSYM (isl_pw_aff_alloc); \
-+  DYNSYM (isl_pw_aff_copy); \
-+  DYNSYM (isl_pw_aff_eq_set); \
-+  DYNSYM (isl_pw_aff_free); \
-+  DYNSYM (isl_pw_aff_from_aff); \
-+  DYNSYM (isl_pw_aff_ge_set); \
-+  DYNSYM (isl_pw_aff_gt_set); \
-+  DYNSYM (isl_pw_aff_is_cst); \
-+  DYNSYM (isl_pw_aff_le_set); \
-+  DYNSYM (isl_pw_aff_lt_set); \
-+  DYNSYM (isl_pw_aff_mul); \
-+  DYNSYM (isl_pw_aff_ne_set); \
-+  DYNSYM (isl_pw_aff_nonneg_set); \
-+  DYNSYM (isl_pw_aff_set_tuple_id); \
-+  DYNSYM (isl_pw_aff_sub); \
-+  DYNSYM (isl_pw_aff_zero_set); \
-+  DYNSYM (isl_schedule_free); \
-+  DYNSYM (isl_schedule_get_band_forest); \
-+  DYNSYM (isl_set_add_constraint); \
-+  DYNSYM (isl_set_add_dims); \
-+  DYNSYM (isl_set_apply); \
-+  DYNSYM (isl_set_coalesce); \
-+  DYNSYM (isl_set_copy); \
-+  DYNSYM (isl_set_dim); \
-+  DYNSYM (isl_set_fix_si); \
-+  DYNSYM (isl_set_free); \
-+  DYNSYM (isl_set_get_space); \
-+  DYNSYM (isl_set_get_tuple_id); \
-+  DYNSYM (isl_set_intersect); \
-+  DYNSYM (isl_set_is_empty); \
-+  DYNSYM (isl_set_n_dim); \
-+  DYNSYM (isl_set_nat_universe); \
-+  DYNSYM (isl_set_project_out); \
-+  DYNSYM (isl_set_set_tuple_id); \
-+  DYNSYM (isl_set_universe); \
-+  DYNSYM (isl_space_add_dims); \
-+  DYNSYM (isl_space_alloc); \
-+  DYNSYM (isl_space_copy); \
-+  DYNSYM (isl_space_dim); \
-+  DYNSYM (isl_space_domain); \
-+  DYNSYM (isl_space_find_dim_by_id); \
-+  DYNSYM (isl_space_free); \
-+  DYNSYM (isl_space_from_domain); \
-+  DYNSYM (isl_space_get_tuple_id); \
-+  DYNSYM (isl_space_params_alloc); \
-+  DYNSYM (isl_space_range); \
-+  DYNSYM (isl_space_set_alloc); \
-+  DYNSYM (isl_space_set_dim_id); \
-+  DYNSYM (isl_space_set_tuple_id); \
-+  DYNSYM (isl_union_map_add_map); \
-+  DYNSYM (isl_union_map_align_params); \
-+  DYNSYM (isl_union_map_apply_domain); \
-+  DYNSYM (isl_union_map_apply_range); \
-+  DYNSYM (isl_union_map_compute_flow); \
-+  DYNSYM (isl_union_map_copy); \
-+  DYNSYM (isl_union_map_empty); \
-+  DYNSYM (isl_union_map_flat_range_product); \
-+  DYNSYM (isl_union_map_foreach_map); \
-+  DYNSYM (isl_union_map_free); \
-+  DYNSYM (isl_union_map_from_map); \
-+  DYNSYM (isl_union_map_get_ctx); \
-+  DYNSYM (isl_union_map_get_space); \
-+  DYNSYM (isl_union_map_gist_domain); \
-+  DYNSYM (isl_union_map_gist_range); \
-+  DYNSYM (isl_union_map_intersect_domain); \
-+  DYNSYM (isl_union_map_is_empty); \
-+  DYNSYM (isl_union_map_subtract); \
-+  DYNSYM (isl_union_map_union); \
-+  DYNSYM (isl_union_set_add_set); \
-+  DYNSYM (isl_union_set_compute_schedule); \
-+  DYNSYM (isl_union_set_copy); \
-+  DYNSYM (isl_union_set_empty); \
-+  DYNSYM (isl_union_set_from_set); \
-+  DYNSYM (isl_aff_add_constant_val); \
-+  DYNSYM (isl_aff_get_coefficient_val); \
-+  DYNSYM (isl_aff_get_ctx); \
-+  DYNSYM (isl_aff_mod_val); \
-+  DYNSYM (isl_ast_build_ast_from_schedule); \
-+  DYNSYM (isl_ast_build_free); \
-+  DYNSYM (isl_ast_build_from_context); \
-+  DYNSYM (isl_ast_build_get_ctx); \
-+  DYNSYM (isl_ast_build_get_schedule); \
-+  DYNSYM (isl_ast_build_get_schedule_space); \
-+  DYNSYM (isl_ast_build_set_before_each_for); \
-+  DYNSYM (isl_ast_build_set_options); \
-+  DYNSYM (isl_ast_expr_free); \
-+  DYNSYM (isl_ast_expr_from_val); \
-+  DYNSYM (isl_ast_expr_get_ctx); \
-+  DYNSYM (isl_ast_expr_get_id); \
-+  DYNSYM (isl_ast_expr_get_op_arg); \
-+  DYNSYM (isl_ast_expr_get_op_n_arg); \
-+  DYNSYM (isl_ast_expr_get_op_type); \
-+  DYNSYM (isl_ast_expr_get_type); \
-+  DYNSYM (isl_ast_expr_get_val); \
-+  DYNSYM (isl_ast_expr_sub); \
-+  DYNSYM (isl_ast_node_block_get_children); \
-+  DYNSYM (isl_ast_node_for_get_body); \
-+  DYNSYM (isl_ast_node_for_get_cond); \
-+  DYNSYM (isl_ast_node_for_get_inc); \
-+  DYNSYM (isl_ast_node_for_get_init); \
-+  DYNSYM (isl_ast_node_for_get_iterator); \
-+  DYNSYM (isl_ast_node_free); \
-+  DYNSYM (isl_ast_node_get_annotation); \
-+  DYNSYM (isl_ast_node_get_type); \
-+  DYNSYM (isl_ast_node_if_get_cond); \
-+  DYNSYM (isl_ast_node_if_get_else); \
-+  DYNSYM (isl_ast_node_if_get_then); \
-+  DYNSYM (isl_ast_node_list_free); \
-+  DYNSYM (isl_ast_node_list_get_ast_node); \
-+  DYNSYM (isl_ast_node_list_n_ast_node); \
-+  DYNSYM (isl_ast_node_user_get_expr); \
-+  DYNSYM (isl_constraint_set_coefficient_val); \
-+  DYNSYM (isl_constraint_set_constant_val); \
-+  DYNSYM (isl_id_get_user); \
-+  DYNSYM (isl_local_space_get_ctx); \
-+  DYNSYM (isl_map_fix_val); \
-+  DYNSYM (isl_options_set_ast_build_atomic_upper_bound); \
-+  DYNSYM (isl_printer_print_ast_node); \
-+  DYNSYM (isl_printer_print_str); \
-+  DYNSYM (isl_printer_set_output_format); \
-+  DYNSYM (isl_pw_aff_mod_val); \
-+  DYNSYM (isl_schedule_constraints_compute_schedule); \
-+  DYNSYM (isl_schedule_constraints_on_domain); \
-+  DYNSYM (isl_schedule_constraints_set_coincidence); \
-+  DYNSYM (isl_schedule_constraints_set_proximity); \
-+  DYNSYM (isl_schedule_constraints_set_validity); \
-+  DYNSYM (isl_set_get_dim_id); \
-+  DYNSYM (isl_set_max_val); \
-+  DYNSYM (isl_set_min_val); \
-+  DYNSYM (isl_set_params); \
-+  DYNSYM (isl_space_align_params); \
-+  DYNSYM (isl_space_map_from_domain_and_range); \
-+  DYNSYM (isl_space_set_tuple_name); \
-+  DYNSYM (isl_space_wrap); \
-+  DYNSYM (isl_union_map_from_domain_and_range); \
-+  DYNSYM (isl_union_map_range); \
-+  DYNSYM (isl_union_set_union); \
-+  DYNSYM (isl_union_set_universe); \
-+  DYNSYM (isl_val_2exp); \
-+  DYNSYM (isl_val_add_ui); \
-+  DYNSYM (isl_val_copy); \
-+  DYNSYM (isl_val_free); \
-+  DYNSYM (isl_val_int_from_si); \
-+  DYNSYM (isl_val_int_from_ui); \
-+  DYNSYM (isl_val_mul); \
-+  DYNSYM (isl_val_neg); \
-+  DYNSYM (isl_val_sub); \
-+  DYNSYM (isl_printer_print_union_map); \
-+  DYNSYM (isl_pw_aff_get_ctx); \
-+  DYNSYM (isl_val_is_int); \
-+  DYNSYM (isl_ctx_get_max_operations); \
-+  DYNSYM (isl_ctx_set_max_operations); \
-+  DYNSYM (isl_ctx_last_error); \
-+  DYNSYM (isl_ctx_reset_operations); \
-+  DYNSYM (isl_map_coalesce); \
-+  DYNSYM (isl_printer_print_schedule); \
-+  DYNSYM (isl_set_set_dim_id); \
-+  DYNSYM (isl_union_map_coalesce); \
-+  DYNSYM (isl_multi_val_set_val); \
-+  DYNSYM (isl_multi_val_zero); \
-+  DYNSYM (isl_options_set_schedule_max_coefficient); \
-+  DYNSYM (isl_options_set_tile_scale_tile_loops); \
-+  DYNSYM (isl_schedule_copy); \
-+  DYNSYM (isl_schedule_get_map); \
-+  DYNSYM (isl_schedule_map_schedule_node_bottom_up); \
-+  DYNSYM (isl_schedule_node_band_get_permutable); \
-+  DYNSYM (isl_schedule_node_band_get_space); \
-+  DYNSYM (isl_schedule_node_band_tile); \
-+  DYNSYM (isl_schedule_node_child); \
-+  DYNSYM (isl_schedule_node_free); \
-+  DYNSYM (isl_schedule_node_get_child); \
-+  DYNSYM (isl_schedule_node_get_ctx); \
-+  DYNSYM (isl_schedule_node_get_type); \
-+  DYNSYM (isl_schedule_node_n_children); \
-+  DYNSYM (isl_union_map_is_equal); \
-+  DYNSYM (isl_union_access_info_compute_flow); \
-+  DYNSYM (isl_union_access_info_from_sink); \
-+  DYNSYM (isl_union_access_info_set_may_source); \
-+  DYNSYM (isl_union_access_info_set_must_source); \
-+  DYNSYM (isl_union_access_info_set_schedule); \
-+  DYNSYM (isl_union_flow_free); \
-+  DYNSYM (isl_union_flow_get_may_dependence); \
-+  DYNSYM (isl_union_flow_get_must_dependence); \
-+  DYNSYM (isl_aff_var_on_domain); \
-+  DYNSYM (isl_multi_aff_from_aff); \
-+  DYNSYM (isl_schedule_get_ctx); \
-+  DYNSYM (isl_multi_aff_set_tuple_id); \
-+  DYNSYM (isl_multi_aff_dim); \
-+  DYNSYM (isl_schedule_get_domain); \
-+  DYNSYM (isl_union_set_is_empty); \
-+  DYNSYM (isl_union_set_get_space); \
-+  DYNSYM (isl_union_pw_multi_aff_empty); \
-+  DYNSYM (isl_union_set_foreach_set); \
-+  DYNSYM (isl_union_set_free); \
-+  DYNSYM (isl_multi_union_pw_aff_from_union_pw_multi_aff); \
-+  DYNSYM (isl_multi_union_pw_aff_apply_multi_aff); \
-+  DYNSYM (isl_schedule_insert_partial_schedule); \
-+  DYNSYM (isl_union_pw_multi_aff_free); \
-+  DYNSYM (isl_pw_multi_aff_project_out_map); \
-+  DYNSYM (isl_union_pw_multi_aff_add_pw_multi_aff); \
-+  DYNSYM (isl_schedule_from_domain); \
-+  DYNSYM (isl_schedule_sequence); \
-+  DYNSYM (isl_ast_build_node_from_schedule); \
-+  DYNSYM (isl_ast_node_mark_get_node); \
-+  DYNSYM (isl_schedule_node_band_member_get_ast_loop_type); \
-+  DYNSYM (isl_schedule_node_band_member_set_ast_loop_type); \
-+  DYNSYM (isl_val_n_abs_num_chunks); \
-+  DYNSYM (isl_val_get_abs_num_chunks); \
-+  DYNSYM (isl_val_int_from_chunks); \
-+  DYNSYM (isl_val_is_neg); \
-+  DYNSYM (isl_version); \
-+  DYNSYM (isl_options_get_on_error); \
-+  DYNSYM (isl_ctx_reset_error);
-+
-+extern struct isl_pointers_s__
-+{
-+  bool inited;
-+  void *h;
-+#define DYNSYM(x) __typeof (x) *p_##x
-+  DYNSYMS
-+#undef DYNSYM
-+} isl_pointers__;
-+
-+#define isl_aff_add_coefficient_si (*isl_pointers__.p_isl_aff_add_coefficient_si)
-+#define isl_aff_free (*isl_pointers__.p_isl_aff_free)
-+#define isl_aff_get_space (*isl_pointers__.p_isl_aff_get_space)
-+#define isl_aff_set_coefficient_si (*isl_pointers__.p_isl_aff_set_coefficient_si)
-+#define isl_aff_set_constant_si (*isl_pointers__.p_isl_aff_set_constant_si)
-+#define isl_aff_zero_on_domain (*isl_pointers__.p_isl_aff_zero_on_domain)
-+#define isl_band_free (*isl_pointers__.p_isl_band_free)
-+#define isl_band_get_children (*isl_pointers__.p_isl_band_get_children)
-+#define isl_band_get_partial_schedule (*isl_pointers__.p_isl_band_get_partial_schedule)
-+#define isl_band_has_children (*isl_pointers__.p_isl_band_has_children)
-+#define isl_band_list_free (*isl_pointers__.p_isl_band_list_free)
-+#define isl_band_list_get_band (*isl_pointers__.p_isl_band_list_get_band)
-+#define isl_band_list_get_ctx (*isl_pointers__.p_isl_band_list_get_ctx)
-+#define isl_band_list_n_band (*isl_pointers__.p_isl_band_list_n_band)
-+#define isl_band_n_member (*isl_pointers__.p_isl_band_n_member)
-+#define isl_basic_map_add_constraint (*isl_pointers__.p_isl_basic_map_add_constraint)
-+#define isl_basic_map_project_out (*isl_pointers__.p_isl_basic_map_project_out)
-+#define isl_basic_map_universe (*isl_pointers__.p_isl_basic_map_universe)
-+#define isl_constraint_set_coefficient_si (*isl_pointers__.p_isl_constraint_set_coefficient_si)
-+#define isl_constraint_set_constant_si (*isl_pointers__.p_isl_constraint_set_constant_si)
-+#define isl_ctx_alloc (*isl_pointers__.p_isl_ctx_alloc)
-+#define isl_ctx_free (*isl_pointers__.p_isl_ctx_free)
-+#define isl_equality_alloc (*isl_pointers__.p_isl_equality_alloc)
-+#define isl_id_alloc (*isl_pointers__.p_isl_id_alloc)
-+#define isl_id_copy (*isl_pointers__.p_isl_id_copy)
-+#define isl_id_free (*isl_pointers__.p_isl_id_free)
-+#define isl_inequality_alloc (*isl_pointers__.p_isl_inequality_alloc)
-+#define isl_local_space_copy (*isl_pointers__.p_isl_local_space_copy)
-+#define isl_local_space_free (*isl_pointers__.p_isl_local_space_free)
-+#define isl_local_space_from_space (*isl_pointers__.p_isl_local_space_from_space)
-+#define isl_local_space_range (*isl_pointers__.p_isl_local_space_range)
-+#define isl_map_add_constraint (*isl_pointers__.p_isl_map_add_constraint)
-+#define isl_map_add_dims (*isl_pointers__.p_isl_map_add_dims)
-+#define isl_map_align_params (*isl_pointers__.p_isl_map_align_params)
-+#define isl_map_apply_range (*isl_pointers__.p_isl_map_apply_range)
-+#define isl_map_copy (*isl_pointers__.p_isl_map_copy)
-+#define isl_map_dim (*isl_pointers__.p_isl_map_dim)
-+#define isl_map_dump (*isl_pointers__.p_isl_map_dump)
-+#define isl_map_equate (*isl_pointers__.p_isl_map_equate)
-+#define isl_map_fix_si (*isl_pointers__.p_isl_map_fix_si)
-+#define isl_map_flat_product (*isl_pointers__.p_isl_map_flat_product)
-+#define isl_map_flat_range_product (*isl_pointers__.p_isl_map_flat_range_product)
-+#define isl_map_free (*isl_pointers__.p_isl_map_free)
-+#define isl_map_from_basic_map (*isl_pointers__.p_isl_map_from_basic_map)
-+#define isl_map_from_pw_aff (*isl_pointers__.p_isl_map_from_pw_aff)
-+#define isl_map_from_union_map (*isl_pointers__.p_isl_map_from_union_map)
-+#define isl_map_get_ctx (*isl_pointers__.p_isl_map_get_ctx)
-+#define isl_map_get_space (*isl_pointers__.p_isl_map_get_space)
-+#define isl_map_get_tuple_id (*isl_pointers__.p_isl_map_get_tuple_id)
-+#define isl_map_insert_dims (*isl_pointers__.p_isl_map_insert_dims)
-+#define isl_map_intersect (*isl_pointers__.p_isl_map_intersect)
-+#define isl_map_intersect_domain (*isl_pointers__.p_isl_map_intersect_domain)
-+#define isl_map_intersect_range (*isl_pointers__.p_isl_map_intersect_range)
-+#define isl_map_is_empty (*isl_pointers__.p_isl_map_is_empty)
-+#define isl_map_lex_ge (*isl_pointers__.p_isl_map_lex_ge)
-+#define isl_map_lex_le (*isl_pointers__.p_isl_map_lex_le)
-+#define isl_map_n_out (*isl_pointers__.p_isl_map_n_out)
-+#define isl_map_range (*isl_pointers__.p_isl_map_range)
-+#define isl_map_set_tuple_id (*isl_pointers__.p_isl_map_set_tuple_id)
-+#define isl_map_universe (*isl_pointers__.p_isl_map_universe)
-+#define isl_options_set_on_error (*isl_pointers__.p_isl_options_set_on_error)
-+#define isl_options_set_schedule_serialize_sccs (*isl_pointers__.p_isl_options_set_schedule_serialize_sccs)
-+#define isl_printer_set_yaml_style (*isl_pointers__.p_isl_printer_set_yaml_style)
-+#define isl_options_set_schedule_max_constant_term (*isl_pointers__.p_isl_options_set_schedule_max_constant_term)
-+#define isl_options_set_schedule_maximize_band_depth (*isl_pointers__.p_isl_options_set_schedule_maximize_band_depth)
-+#define isl_printer_free (*isl_pointers__.p_isl_printer_free)
-+#define isl_printer_print_aff (*isl_pointers__.p_isl_printer_print_aff)
-+#define isl_printer_print_constraint (*isl_pointers__.p_isl_printer_print_constraint)
-+#define isl_printer_print_map (*isl_pointers__.p_isl_printer_print_map)
-+#define isl_printer_print_set (*isl_pointers__.p_isl_printer_print_set)
-+#define isl_printer_to_file (*isl_pointers__.p_isl_printer_to_file)
-+#define isl_pw_aff_add (*isl_pointers__.p_isl_pw_aff_add)
-+#define isl_pw_aff_alloc (*isl_pointers__.p_isl_pw_aff_alloc)
-+#define isl_pw_aff_copy (*isl_pointers__.p_isl_pw_aff_copy)
-+#define isl_pw_aff_eq_set (*isl_pointers__.p_isl_pw_aff_eq_set)
-+#define isl_pw_aff_free (*isl_pointers__.p_isl_pw_aff_free)
-+#define isl_pw_aff_from_aff (*isl_pointers__.p_isl_pw_aff_from_aff)
-+#define isl_pw_aff_ge_set (*isl_pointers__.p_isl_pw_aff_ge_set)
-+#define isl_pw_aff_gt_set (*isl_pointers__.p_isl_pw_aff_gt_set)
-+#define isl_pw_aff_is_cst (*isl_pointers__.p_isl_pw_aff_is_cst)
-+#define isl_pw_aff_le_set (*isl_pointers__.p_isl_pw_aff_le_set)
-+#define isl_pw_aff_lt_set (*isl_pointers__.p_isl_pw_aff_lt_set)
-+#define isl_pw_aff_mul (*isl_pointers__.p_isl_pw_aff_mul)
-+#define isl_pw_aff_ne_set (*isl_pointers__.p_isl_pw_aff_ne_set)
-+#define isl_pw_aff_nonneg_set (*isl_pointers__.p_isl_pw_aff_nonneg_set)
-+#define isl_pw_aff_set_tuple_id (*isl_pointers__.p_isl_pw_aff_set_tuple_id)
-+#define isl_pw_aff_sub (*isl_pointers__.p_isl_pw_aff_sub)
-+#define isl_pw_aff_zero_set (*isl_pointers__.p_isl_pw_aff_zero_set)
-+#define isl_schedule_free (*isl_pointers__.p_isl_schedule_free)
-+#define isl_schedule_get_band_forest (*isl_pointers__.p_isl_schedule_get_band_forest)
-+#define isl_set_add_constraint (*isl_pointers__.p_isl_set_add_constraint)
-+#define isl_set_add_dims (*isl_pointers__.p_isl_set_add_dims)
-+#define isl_set_apply (*isl_pointers__.p_isl_set_apply)
-+#define isl_set_coalesce (*isl_pointers__.p_isl_set_coalesce)
-+#define isl_set_copy (*isl_pointers__.p_isl_set_copy)
-+#define isl_set_dim (*isl_pointers__.p_isl_set_dim)
-+#define isl_set_fix_si (*isl_pointers__.p_isl_set_fix_si)
-+#define isl_set_free (*isl_pointers__.p_isl_set_free)
-+#define isl_set_get_space (*isl_pointers__.p_isl_set_get_space)
-+#define isl_set_get_tuple_id (*isl_pointers__.p_isl_set_get_tuple_id)
-+#define isl_set_intersect (*isl_pointers__.p_isl_set_intersect)
-+#define isl_set_is_empty (*isl_pointers__.p_isl_set_is_empty)
-+#define isl_set_n_dim (*isl_pointers__.p_isl_set_n_dim)
-+#define isl_set_nat_universe (*isl_pointers__.p_isl_set_nat_universe)
-+#define isl_set_project_out (*isl_pointers__.p_isl_set_project_out)
-+#define isl_set_set_tuple_id (*isl_pointers__.p_isl_set_set_tuple_id)
-+#define isl_set_universe (*isl_pointers__.p_isl_set_universe)
-+#define isl_space_add_dims (*isl_pointers__.p_isl_space_add_dims)
-+#define isl_space_alloc (*isl_pointers__.p_isl_space_alloc)
-+#define isl_space_copy (*isl_pointers__.p_isl_space_copy)
-+#define isl_space_dim (*isl_pointers__.p_isl_space_dim)
-+#define isl_space_domain (*isl_pointers__.p_isl_space_domain)
-+#define isl_space_find_dim_by_id (*isl_pointers__.p_isl_space_find_dim_by_id)
-+#define isl_space_free (*isl_pointers__.p_isl_space_free)
-+#define isl_space_from_domain (*isl_pointers__.p_isl_space_from_domain)
-+#define isl_space_get_tuple_id (*isl_pointers__.p_isl_space_get_tuple_id)
-+#define isl_space_params_alloc (*isl_pointers__.p_isl_space_params_alloc)
-+#define isl_space_range (*isl_pointers__.p_isl_space_range)
-+#define isl_space_set_alloc (*isl_pointers__.p_isl_space_set_alloc)
-+#define isl_space_set_dim_id (*isl_pointers__.p_isl_space_set_dim_id)
-+#define isl_space_set_tuple_id (*isl_pointers__.p_isl_space_set_tuple_id)
-+#define isl_union_map_add_map (*isl_pointers__.p_isl_union_map_add_map)
-+#define isl_union_map_align_params (*isl_pointers__.p_isl_union_map_align_params)
-+#define isl_union_map_apply_domain (*isl_pointers__.p_isl_union_map_apply_domain)
-+#define isl_union_map_apply_range (*isl_pointers__.p_isl_union_map_apply_range)
-+#define isl_union_map_compute_flow (*isl_pointers__.p_isl_union_map_compute_flow)
-+#define isl_union_map_copy (*isl_pointers__.p_isl_union_map_copy)
-+#define isl_union_map_empty (*isl_pointers__.p_isl_union_map_empty)
-+#define isl_union_map_flat_range_product (*isl_pointers__.p_isl_union_map_flat_range_product)
-+#define isl_union_map_foreach_map (*isl_pointers__.p_isl_union_map_foreach_map)
-+#define isl_union_map_free (*isl_pointers__.p_isl_union_map_free)
-+#define isl_union_map_from_map (*isl_pointers__.p_isl_union_map_from_map)
-+#define isl_union_map_get_ctx (*isl_pointers__.p_isl_union_map_get_ctx)
-+#define isl_union_map_get_space (*isl_pointers__.p_isl_union_map_get_space)
-+#define isl_union_map_gist_domain (*isl_pointers__.p_isl_union_map_gist_domain)
-+#define isl_union_map_gist_range (*isl_pointers__.p_isl_union_map_gist_range)
-+#define isl_union_map_intersect_domain (*isl_pointers__.p_isl_union_map_intersect_domain)
-+#define isl_union_map_is_empty (*isl_pointers__.p_isl_union_map_is_empty)
-+#define isl_union_map_subtract (*isl_pointers__.p_isl_union_map_subtract)
-+#define isl_union_map_union (*isl_pointers__.p_isl_union_map_union)
-+#define isl_union_set_add_set (*isl_pointers__.p_isl_union_set_add_set)
-+#define isl_union_set_compute_schedule (*isl_pointers__.p_isl_union_set_compute_schedule)
-+#define isl_union_set_copy (*isl_pointers__.p_isl_union_set_copy)
-+#define isl_union_set_empty (*isl_pointers__.p_isl_union_set_empty)
-+#define isl_union_set_from_set (*isl_pointers__.p_isl_union_set_from_set)
-+#define isl_aff_add_constant_val (*isl_pointers__.p_isl_aff_add_constant_val)
-+#define isl_aff_get_coefficient_val (*isl_pointers__.p_isl_aff_get_coefficient_val)
-+#define isl_aff_get_ctx (*isl_pointers__.p_isl_aff_get_ctx)
-+#define isl_aff_mod_val (*isl_pointers__.p_isl_aff_mod_val)
-+#define isl_ast_build_ast_from_schedule (*isl_pointers__.p_isl_ast_build_ast_from_schedule)
-+#define isl_ast_build_free (*isl_pointers__.p_isl_ast_build_free)
-+#define isl_ast_build_from_context (*isl_pointers__.p_isl_ast_build_from_context)
-+#define isl_ast_build_get_ctx (*isl_pointers__.p_isl_ast_build_get_ctx)
-+#define isl_ast_build_get_schedule (*isl_pointers__.p_isl_ast_build_get_schedule)
-+#define isl_ast_build_get_schedule_space (*isl_pointers__.p_isl_ast_build_get_schedule_space)
-+#define isl_ast_build_set_before_each_for (*isl_pointers__.p_isl_ast_build_set_before_each_for)
-+#define isl_ast_build_set_options (*isl_pointers__.p_isl_ast_build_set_options)
-+#define isl_ast_expr_free (*isl_pointers__.p_isl_ast_expr_free)
-+#define isl_ast_expr_from_val (*isl_pointers__.p_isl_ast_expr_from_val)
-+#define isl_ast_expr_get_ctx (*isl_pointers__.p_isl_ast_expr_get_ctx)
-+#define isl_ast_expr_get_id (*isl_pointers__.p_isl_ast_expr_get_id)
-+#define isl_ast_expr_get_op_arg (*isl_pointers__.p_isl_ast_expr_get_op_arg)
-+#define isl_ast_expr_get_op_n_arg (*isl_pointers__.p_isl_ast_expr_get_op_n_arg)
-+#define isl_ast_expr_get_op_type (*isl_pointers__.p_isl_ast_expr_get_op_type)
-+#define isl_ast_expr_get_type (*isl_pointers__.p_isl_ast_expr_get_type)
-+#define isl_ast_expr_get_val (*isl_pointers__.p_isl_ast_expr_get_val)
-+#define isl_ast_expr_sub (*isl_pointers__.p_isl_ast_expr_sub)
-+#define isl_ast_node_block_get_children (*isl_pointers__.p_isl_ast_node_block_get_children)
-+#define isl_ast_node_for_get_body (*isl_pointers__.p_isl_ast_node_for_get_body)
-+#define isl_ast_node_for_get_cond (*isl_pointers__.p_isl_ast_node_for_get_cond)
-+#define isl_ast_node_for_get_inc (*isl_pointers__.p_isl_ast_node_for_get_inc)
-+#define isl_ast_node_for_get_init (*isl_pointers__.p_isl_ast_node_for_get_init)
-+#define isl_ast_node_for_get_iterator (*isl_pointers__.p_isl_ast_node_for_get_iterator)
-+#define isl_ast_node_free (*isl_pointers__.p_isl_ast_node_free)
-+#define isl_ast_node_get_annotation (*isl_pointers__.p_isl_ast_node_get_annotation)
-+#define isl_ast_node_get_type (*isl_pointers__.p_isl_ast_node_get_type)
-+#define isl_ast_node_if_get_cond (*isl_pointers__.p_isl_ast_node_if_get_cond)
-+#define isl_ast_node_if_get_else (*isl_pointers__.p_isl_ast_node_if_get_else)
-+#define isl_ast_node_if_get_then (*isl_pointers__.p_isl_ast_node_if_get_then)
-+#define isl_ast_node_list_free (*isl_pointers__.p_isl_ast_node_list_free)
-+#define isl_ast_node_list_get_ast_node (*isl_pointers__.p_isl_ast_node_list_get_ast_node)
-+#define isl_ast_node_list_n_ast_node (*isl_pointers__.p_isl_ast_node_list_n_ast_node)
-+#define isl_ast_node_user_get_expr (*isl_pointers__.p_isl_ast_node_user_get_expr)
-+#define isl_constraint_set_coefficient_val (*isl_pointers__.p_isl_constraint_set_coefficient_val)
-+#define isl_constraint_set_constant_val (*isl_pointers__.p_isl_constraint_set_constant_val)
-+#define isl_id_get_user (*isl_pointers__.p_isl_id_get_user)
-+#define isl_local_space_get_ctx (*isl_pointers__.p_isl_local_space_get_ctx)
-+#define isl_map_fix_val (*isl_pointers__.p_isl_map_fix_val)
-+#define isl_options_set_ast_build_atomic_upper_bound (*isl_pointers__.p_isl_options_set_ast_build_atomic_upper_bound)
-+#define isl_printer_print_ast_node (*isl_pointers__.p_isl_printer_print_ast_node)
-+#define isl_printer_print_str (*isl_pointers__.p_isl_printer_print_str)
-+#define isl_printer_set_output_format (*isl_pointers__.p_isl_printer_set_output_format)
-+#define isl_pw_aff_mod_val (*isl_pointers__.p_isl_pw_aff_mod_val)
-+#define isl_schedule_constraints_compute_schedule (*isl_pointers__.p_isl_schedule_constraints_compute_schedule)
-+#define isl_schedule_constraints_on_domain (*isl_pointers__.p_isl_schedule_constraints_on_domain)
-+#define isl_schedule_constraints_set_coincidence (*isl_pointers__.p_isl_schedule_constraints_set_coincidence)
-+#define isl_schedule_constraints_set_proximity (*isl_pointers__.p_isl_schedule_constraints_set_proximity)
-+#define isl_schedule_constraints_set_validity (*isl_pointers__.p_isl_schedule_constraints_set_validity)
-+#define isl_set_get_dim_id (*isl_pointers__.p_isl_set_get_dim_id)
-+#define isl_set_max_val (*isl_pointers__.p_isl_set_max_val)
-+#define isl_set_min_val (*isl_pointers__.p_isl_set_min_val)
-+#define isl_set_params (*isl_pointers__.p_isl_set_params)
-+#define isl_space_align_params (*isl_pointers__.p_isl_space_align_params)
-+#define isl_space_map_from_domain_and_range (*isl_pointers__.p_isl_space_map_from_domain_and_range)
-+#define isl_space_set_tuple_name (*isl_pointers__.p_isl_space_set_tuple_name)
-+#define isl_space_wrap (*isl_pointers__.p_isl_space_wrap)
-+#define isl_union_map_from_domain_and_range (*isl_pointers__.p_isl_union_map_from_domain_and_range)
-+#define isl_union_map_range (*isl_pointers__.p_isl_union_map_range)
-+#define isl_union_set_union (*isl_pointers__.p_isl_union_set_union)
-+#define isl_union_set_universe (*isl_pointers__.p_isl_union_set_universe)
-+#define isl_val_2exp (*isl_pointers__.p_isl_val_2exp)
-+#define isl_val_add_ui (*isl_pointers__.p_isl_val_add_ui)
-+#define isl_val_copy (*isl_pointers__.p_isl_val_copy)
-+#define isl_val_free (*isl_pointers__.p_isl_val_free)
-+#define isl_val_int_from_si (*isl_pointers__.p_isl_val_int_from_si)
-+#define isl_val_int_from_ui (*isl_pointers__.p_isl_val_int_from_ui)
-+#define isl_val_mul (*isl_pointers__.p_isl_val_mul)
-+#define isl_val_neg (*isl_pointers__.p_isl_val_neg)
-+#define isl_val_sub (*isl_pointers__.p_isl_val_sub)
-+#define isl_printer_print_union_map (*isl_pointers__.p_isl_printer_print_union_map)
-+#define isl_pw_aff_get_ctx (*isl_pointers__.p_isl_pw_aff_get_ctx)
-+#define isl_val_is_int (*isl_pointers__.p_isl_val_is_int)
-+#define isl_ctx_get_max_operations (*isl_pointers__.p_isl_ctx_get_max_operations)
-+#define isl_ctx_set_max_operations (*isl_pointers__.p_isl_ctx_set_max_operations)
-+#define isl_ctx_last_error (*isl_pointers__.p_isl_ctx_last_error)
-+#define isl_ctx_reset_operations (*isl_pointers__.p_isl_ctx_reset_operations)
-+#define isl_map_coalesce (*isl_pointers__.p_isl_map_coalesce)
-+#define isl_printer_print_schedule (*isl_pointers__.p_isl_printer_print_schedule)
-+#define isl_set_set_dim_id (*isl_pointers__.p_isl_set_set_dim_id)
-+#define isl_union_map_coalesce (*isl_pointers__.p_isl_union_map_coalesce)
-+#define isl_multi_val_set_val (*isl_pointers__.p_isl_multi_val_set_val)
-+#define isl_multi_val_zero (*isl_pointers__.p_isl_multi_val_zero)
-+#define isl_options_set_schedule_max_coefficient (*isl_pointers__.p_isl_options_set_schedule_max_coefficient)
-+#define isl_options_set_tile_scale_tile_loops (*isl_pointers__.p_isl_options_set_tile_scale_tile_loops)
-+#define isl_schedule_copy (*isl_pointers__.p_isl_schedule_copy)
-+#define isl_schedule_get_map (*isl_pointers__.p_isl_schedule_get_map)
-+#define isl_schedule_map_schedule_node_bottom_up (*isl_pointers__.p_isl_schedule_map_schedule_node_bottom_up)
-+#define isl_schedule_node_band_get_permutable (*isl_pointers__.p_isl_schedule_node_band_get_permutable)
-+#define isl_schedule_node_band_get_space (*isl_pointers__.p_isl_schedule_node_band_get_space)
-+#define isl_schedule_node_band_tile (*isl_pointers__.p_isl_schedule_node_band_tile)
-+#define isl_schedule_node_child (*isl_pointers__.p_isl_schedule_node_child)
-+#define isl_schedule_node_free (*isl_pointers__.p_isl_schedule_node_free)
-+#define isl_schedule_node_get_child (*isl_pointers__.p_isl_schedule_node_get_child)
-+#define isl_schedule_node_get_ctx (*isl_pointers__.p_isl_schedule_node_get_ctx)
-+#define isl_schedule_node_get_type (*isl_pointers__.p_isl_schedule_node_get_type)
-+#define isl_schedule_node_n_children (*isl_pointers__.p_isl_schedule_node_n_children)
-+#define isl_union_map_is_equal (*isl_pointers__.p_isl_union_map_is_equal)
-+#define isl_union_access_info_compute_flow (*isl_pointers__.p_isl_union_access_info_compute_flow)
-+#define isl_union_access_info_from_sink (*isl_pointers__.p_isl_union_access_info_from_sink)
-+#define isl_union_access_info_set_may_source (*isl_pointers__.p_isl_union_access_info_set_may_source)
-+#define isl_union_access_info_set_must_source (*isl_pointers__.p_isl_union_access_info_set_must_source)
-+#define isl_union_access_info_set_schedule (*isl_pointers__.p_isl_union_access_info_set_schedule)
-+#define isl_union_flow_free (*isl_pointers__.p_isl_union_flow_free)
-+#define isl_union_flow_get_may_dependence (*isl_pointers__.p_isl_union_flow_get_may_dependence)
-+#define isl_union_flow_get_must_dependence (*isl_pointers__.p_isl_union_flow_get_must_dependence)
-+#define isl_aff_var_on_domain (*isl_pointers__.p_isl_aff_var_on_domain)
-+#define isl_multi_aff_from_aff (*isl_pointers__.p_isl_multi_aff_from_aff)
-+#define isl_schedule_get_ctx (*isl_pointers__.p_isl_schedule_get_ctx)
-+#define isl_multi_aff_set_tuple_id (*isl_pointers__.p_isl_multi_aff_set_tuple_id)
-+#define isl_multi_aff_dim (*isl_pointers__.p_isl_multi_aff_dim)
-+#define isl_schedule_get_domain (*isl_pointers__.p_isl_schedule_get_domain)
-+#define isl_union_set_is_empty (*isl_pointers__.p_isl_union_set_is_empty)
-+#define isl_union_set_get_space (*isl_pointers__.p_isl_union_set_get_space)
-+#define isl_union_pw_multi_aff_empty (*isl_pointers__.p_isl_union_pw_multi_aff_empty)
-+#define isl_union_set_foreach_set (*isl_pointers__.p_isl_union_set_foreach_set)
-+#define isl_union_set_free (*isl_pointers__.p_isl_union_set_free)
-+#define isl_multi_union_pw_aff_from_union_pw_multi_aff (*isl_pointers__.p_isl_multi_union_pw_aff_from_union_pw_multi_aff)
-+#define isl_multi_union_pw_aff_apply_multi_aff (*isl_pointers__.p_isl_multi_union_pw_aff_apply_multi_aff)
-+#define isl_schedule_insert_partial_schedule (*isl_pointers__.p_isl_schedule_insert_partial_schedule)
-+#define isl_union_pw_multi_aff_free (*isl_pointers__.p_isl_union_pw_multi_aff_free)
-+#define isl_pw_multi_aff_project_out_map (*isl_pointers__.p_isl_pw_multi_aff_project_out_map)
-+#define isl_union_pw_multi_aff_add_pw_multi_aff (*isl_pointers__.p_isl_union_pw_multi_aff_add_pw_multi_aff)
-+#define isl_schedule_from_domain (*isl_pointers__.p_isl_schedule_from_domain)
-+#define isl_schedule_sequence (*isl_pointers__.p_isl_schedule_sequence)
-+#define isl_ast_build_node_from_schedule (*isl_pointers__.p_isl_ast_build_node_from_schedule)
-+#define isl_ast_node_mark_get_node (*isl_pointers__.p_isl_ast_node_mark_get_node)
-+#define isl_schedule_node_band_member_get_ast_loop_type (*isl_pointers__.p_isl_schedule_node_band_member_get_ast_loop_type)
-+#define isl_schedule_node_band_member_set_ast_loop_type (*isl_pointers__.p_isl_schedule_node_band_member_set_ast_loop_type)
-+#define isl_val_n_abs_num_chunks (*isl_pointers__.p_isl_val_n_abs_num_chunks)
-+#define isl_val_get_abs_num_chunks (*isl_pointers__.p_isl_val_get_abs_num_chunks)
-+#define isl_val_int_from_chunks (*isl_pointers__.p_isl_val_int_from_chunks)
-+#define isl_val_is_neg (*isl_pointers__.p_isl_val_is_neg)
-+#define isl_version (*isl_pointers__.p_isl_version)
-+#define isl_options_get_on_error (*isl_pointers__.p_isl_options_get_on_error)
-+#define isl_ctx_reset_error (*isl_pointers__.p_isl_ctx_reset_error)
- 
- typedef struct poly_dr *poly_dr_p;
- 
-@@ -461,5 +1045,6 @@ extern void build_scops (vec<scop_p> *);
- extern void dot_all_sese (FILE *, vec<sese_l> &);
- extern void dot_sese (sese_l &);
- extern void dot_cfg ();
-+extern const char *get_isl_version (bool);
- 
- #endif
---- gcc/graphite.c.jj	2015-11-04 14:15:32.000000000 +0100
-+++ gcc/graphite.c	2015-11-04 14:56:02.645536409 +0100
-@@ -60,6 +60,35 @@ along with GCC; see the file COPYING3.
- #include "tree-into-ssa.h"
- #include "graphite.h"
- 
-+__typeof (isl_pointers__) isl_pointers__;
-+
-+static bool
-+init_isl_pointers (void)
-+{
-+  void *h;
-+
-+  if (isl_pointers__.inited)
-+    return isl_pointers__.h != NULL;
-+  h = dlopen ("libisl.so.15", RTLD_LAZY);
-+  isl_pointers__.h = h;
-+  if (h == NULL)
-+    return false;
-+#define DYNSYM(x) \
-+  do \
-+    { \
-+      union { __typeof (isl_pointers__.p_##x) p; void *q; } u; \
-+      u.q = dlsym (h, #x); \
-+      if (u.q == NULL) \
-+	return false; \
-+      isl_pointers__.p_##x = u.p; \
-+    } \
-+  while (0)
-+  DYNSYMS
-+#undef DYNSYM
-+  isl_pointers__.inited = true;
-+  return true;
-+}
-+
- /* Print global statistics to FILE.  */
- 
- static void
-@@ -365,6 +394,15 @@ graphite_transform_loops (void)
-   if (parallelized_function_p (cfun->decl))
-     return;
- 
-+  if (number_of_loops (cfun) <= 1)
-+    return;
-+
-+  if (!init_isl_pointers ())
-+    {
-+      sorry ("Graphite loop optimizations cannot be used");
-+      return;
-+    }
-+
-   calculate_dominance_info (CDI_DOMINATORS);
- 
-   /* We rely on post-dominators during merging of SESE regions so those
-@@ -455,6 +493,14 @@ graphite_transform_loops (void)
-     }
- }
- 
-+const char *
-+get_isl_version (bool force)
-+{
-+  if (force)
-+    init_isl_pointers ();
-+  return (isl_pointers__.inited && isl_version) ? isl_version () : "none";
-+}
-+
- #else /* If isl is not available: #ifndef HAVE_isl.  */
- 
- static void
---- gcc/toplev.c.jj	2017-02-19 13:02:31.000000000 +0100
-+++ gcc/toplev.c	2017-02-19 16:50:25.536301350 +0100
-@@ -94,6 +94,7 @@ along with GCC; see the file COPYING3.
- 
- #ifdef HAVE_isl
- #include <isl/version.h>
-+extern const char *get_isl_version (bool);
- #endif
- 
- static void general_init (const char *, bool);
-@@ -683,7 +684,7 @@ print_version (FILE *file, const char *i
- #ifndef HAVE_isl
- 	   "none"
- #else
--	   isl_version ()
-+	   get_isl_version (*indent == 0)
- #endif
- 	   );
-   if (strcmp (GCC_GMP_STRINGIFY_VERSION, gmp_version))

diff --git a/gcc8-libgomp-omp_h-multilib.patch b/gcc8-libgomp-omp_h-multilib.patch
deleted file mode 100644
index d0e98d1..0000000
--- a/gcc8-libgomp-omp_h-multilib.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-2008-06-09  Jakub Jelinek  <jakub@redhat.com>
-
-	* omp.h.in (omp_nest_lock_t): Fix up for Linux multilibs.
-
---- libgomp/omp.h.in.jj	2008-06-09 13:34:05.000000000 +0200
-+++ libgomp/omp.h.in	2008-06-09 13:34:48.000000000 +0200
-@@ -42,8 +42,8 @@ typedef struct
- 
- typedef struct
- {
--  unsigned char _x[@OMP_NEST_LOCK_SIZE@] 
--    __attribute__((__aligned__(@OMP_NEST_LOCK_ALIGN@)));
-+  unsigned char _x[8 + sizeof (void *)] 
-+    __attribute__((__aligned__(sizeof (void *))));
- } omp_nest_lock_t;
- #endif
- 

diff --git a/gcc8-libstdc++-docs.patch b/gcc8-libstdc++-docs.patch
deleted file mode 100644
index e73a92b..0000000
--- a/gcc8-libstdc++-docs.patch
+++ /dev/null
@@ -1,24 +0,0 @@
---- libstdc++-v3/doc/html/index.html.jj	2011-01-03 12:53:21.282829010 +0100
-+++ libstdc++-v3/doc/html/index.html	2011-01-04 18:06:28.999851145 +0100
-@@ -5,6 +5,8 @@
-       <a class="link" href="https://www.fsf.org" target="_top">FSF
-       </a>
-     </p><p>
-+      Release 8.2.1
-+    </p><p>
-       Permission is granted to copy, distribute and/or modify this
-       document under the terms of the GNU Free Documentation
-       License, Version 1.2 or any later version published by the
---- libstdc++-v3/doc/html/api.html.jj	2011-01-03 12:53:21.000000000 +0100
-+++ libstdc++-v3/doc/html/api.html	2011-01-04 18:12:01.672757784 +0100
-@@ -20,7 +20,9 @@
-   member functions for the library classes, finding out what is in a
-   particular include file, looking at inheritance diagrams, etc.
- </p><p>
--  The API documentation, rendered into HTML, can be viewed online
-+  The API documentation, rendered into HTML, can be viewed locally
-+  <a class="link" href="api/index.html" target="_top">for the 8.2.1 release</a>,
-+  online
-   <a class="link" href="http://gcc.gnu.org/onlinedocs/" target="_top">for each GCC release</a>
-   and
-   <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/index.html" target="_top">

diff --git a/gcc8-libtool-no-rpath.patch b/gcc8-libtool-no-rpath.patch
deleted file mode 100644
index 466c661..0000000
--- a/gcc8-libtool-no-rpath.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-libtool sucks.
---- ltmain.sh.jj	2007-12-07 14:53:21.000000000 +0100
-+++ ltmain.sh	2008-09-05 21:51:48.000000000 +0200
-@@ -5394,6 +5394,7 @@ EOF
- 	  rpath="$finalize_rpath"
- 	  test "$mode" != relink && rpath="$compile_rpath$rpath"
- 	  for libdir in $rpath; do
-+	    case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
- 	    if test -n "$hardcode_libdir_flag_spec"; then
- 	      if test -n "$hardcode_libdir_separator"; then
- 		if test -z "$hardcode_libdirs"; then
-@@ -6071,6 +6072,7 @@ EOF
-       rpath=
-       hardcode_libdirs=
-       for libdir in $compile_rpath $finalize_rpath; do
-+	case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
- 	if test -n "$hardcode_libdir_flag_spec"; then
- 	  if test -n "$hardcode_libdir_separator"; then
- 	    if test -z "$hardcode_libdirs"; then
-@@ -6120,6 +6122,7 @@ EOF
-       rpath=
-       hardcode_libdirs=
-       for libdir in $finalize_rpath; do
-+	case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
- 	if test -n "$hardcode_libdir_flag_spec"; then
- 	  if test -n "$hardcode_libdir_separator"; then
- 	    if test -z "$hardcode_libdirs"; then

diff --git a/gcc8-mcet.patch b/gcc8-mcet.patch
deleted file mode 100644
index 6fb78ca..0000000
--- a/gcc8-mcet.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-2018-04-24  Jakub Jelinek  <jakub@redhat.com>
-
-	* config/i386/i386.opt (mcet): Remporarily re-add as alias to -mshstk.
-
---- gcc/config/i386/i386.opt	(revision 259613)
-+++ gcc/config/i386/i386.opt	(revision 259612)
-@@ -1006,6 +1006,10 @@ mgeneral-regs-only
- Target Report RejectNegative Mask(GENERAL_REGS_ONLY) Var(ix86_target_flags) Save
- Generate code which uses only the general registers.
- 
-+mcet
-+Target Undocumented Alias(mshstk)
-+;; Deprecated
-+
- mshstk
- Target Report Mask(ISA_SHSTK) Var(ix86_isa_flags) Save
- Enable shadow stack built-in functions from Control-flow Enforcement

diff --git a/gcc8-no-add-needed.patch b/gcc8-no-add-needed.patch
deleted file mode 100644
index aa2f52d..0000000
--- a/gcc8-no-add-needed.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-2010-02-08  Roland McGrath  <roland@redhat.com>
-
-	* config/rs6000/sysv4.h (LINK_EH_SPEC): Pass --no-add-needed to the
-	linker.
-	* config/gnu-user.h (LINK_EH_SPEC): Likewise.
-	* config/alpha/elf.h (LINK_EH_SPEC): Likewise.
-	* config/ia64/linux.h (LINK_EH_SPEC): Likewise.
-
---- gcc/config/alpha/elf.h.jj	2011-01-03 12:52:31.118056764 +0100
-+++ gcc/config/alpha/elf.h	2011-01-04 18:14:10.931874160 +0100
-@@ -168,5 +168,5 @@ extern int alpha_this_gpdisp_sequence_nu
-    I imagine that other systems will catch up.  In the meantime, it
-    doesn't harm to make sure that the data exists to be used later.  */
- #if defined(HAVE_LD_EH_FRAME_HDR)
--#define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
-+#define LINK_EH_SPEC "--no-add-needed %{!static|static-pie:--eh-frame-hdr} "
- #endif
---- gcc/config/ia64/linux.h.jj	2011-01-03 13:02:11.462994522 +0100
-+++ gcc/config/ia64/linux.h	2011-01-04 18:14:10.931874160 +0100
-@@ -76,7 +76,7 @@ do {						\
-    Signalize that because we have fde-glibc, we don't need all C shared libs
-    linked against -lgcc_s.  */
- #undef LINK_EH_SPEC
--#define LINK_EH_SPEC ""
-+#define LINK_EH_SPEC "--no-add-needed "
- 
- #undef TARGET_INIT_LIBFUNCS
- #define TARGET_INIT_LIBFUNCS ia64_soft_fp_init_libfuncs
---- gcc/config/gnu-user.h.jj	2011-01-03 12:53:03.739057299 +0100
-+++ gcc/config/gnu-user.h	2011-01-04 18:14:10.932814884 +0100
-@@ -133,7 +133,7 @@ see the files COPYING3 and COPYING.RUNTI
- #define LIB_SPEC GNU_USER_TARGET_LIB_SPEC
- 
- #if defined(HAVE_LD_EH_FRAME_HDR)
--#define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
-+#define LINK_EH_SPEC "--no-add-needed %{!static|static-pie:--eh-frame-hdr} "
- #endif
- 
- #undef LINK_GCC_C_SEQUENCE_SPEC
---- gcc/config/rs6000/sysv4.h.jj	2011-01-03 13:02:18.255994215 +0100
-+++ gcc/config/rs6000/sysv4.h	2011-01-04 18:14:10.933888871 +0100
-@@ -816,7 +816,7 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEF
-   -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}"
- 
- #if defined(HAVE_LD_EH_FRAME_HDR)
--# define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
-+# define LINK_EH_SPEC "--no-add-needed %{!static|static-pie:--eh-frame-hdr} "
- #endif
- 
- #define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \

diff --git a/gcc8-rh1512529-aarch64.patch b/gcc8-rh1512529-aarch64.patch
deleted file mode 100644
index 4030027..0000000
--- a/gcc8-rh1512529-aarch64.patch
+++ /dev/null
@@ -1,445 +0,0 @@
---- gcc/config/aarch64/aarch64.c
-+++ gcc/config/aarch64/aarch64.c
-@@ -3799,7 +3799,14 @@ aarch64_output_probe_stack_range (rtx reg1, rtx reg2)
-   output_asm_insn ("sub\t%0, %0, %1", xops);
- 
-   /* Probe at TEST_ADDR.  */
--  output_asm_insn ("str\txzr, [%0]", xops);
-+  if (flag_stack_clash_protection)
-+    {
-+      gcc_assert (xops[0] == stack_pointer_rtx);
-+      xops[1] = GEN_INT (PROBE_INTERVAL - 8);
-+      output_asm_insn ("str\txzr, [%0, %1]", xops);
-+    }
-+  else
-+    output_asm_insn ("str\txzr, [%0]", xops);
- 
-   /* Test if TEST_ADDR == LAST_ADDR.  */
-   xops[1] = reg2;
-@@ -4589,6 +4596,133 @@ aarch64_set_handled_components (sbitmap components)
-       cfun->machine->reg_is_wrapped_separately[regno] = true;
- }
- 
-+/* Allocate POLY_SIZE bytes of stack space using TEMP1 and TEMP2 as scratch
-+   registers.  */
-+
-+static void
-+aarch64_allocate_and_probe_stack_space (rtx temp1, rtx temp2,
-+					poly_int64 poly_size)
-+{
-+  HOST_WIDE_INT size;
-+  if (!poly_size.is_constant (&size))
-+    {
-+      sorry ("stack probes for SVE frames");
-+      return;
-+    }
-+
-+  HOST_WIDE_INT probe_interval
-+    = 1 << PARAM_VALUE (PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL);
-+  HOST_WIDE_INT guard_size
-+    = 1 << PARAM_VALUE (PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE);
-+  HOST_WIDE_INT guard_used_by_caller = 1024;
-+
-+  /* SIZE should be large enough to require probing here.  ie, it
-+     must be larger than GUARD_SIZE - GUARD_USED_BY_CALLER.
-+
-+     We can allocate GUARD_SIZE - GUARD_USED_BY_CALLER as a single chunk
-+     without any probing.  */
-+  gcc_assert (size >= guard_size - guard_used_by_caller);
-+  aarch64_sub_sp (temp1, temp2, guard_size - guard_used_by_caller, true);
-+  HOST_WIDE_INT orig_size = size;
-+  size -= (guard_size - guard_used_by_caller);
-+
-+  HOST_WIDE_INT rounded_size = size & -probe_interval;
-+  HOST_WIDE_INT residual = size - rounded_size;
-+
-+  /* We can handle a small number of allocations/probes inline.  Otherwise
-+     punt to a loop.  */
-+  if (rounded_size && rounded_size <= 4 * probe_interval)
-+    {
-+      /* We don't use aarch64_sub_sp here because we don't want to
-+	 repeatedly load TEMP1.  */
-+      rtx step = GEN_INT (-probe_interval);
-+      if (probe_interval > ARITH_FACTOR)
-+	{
-+	  emit_move_insn (temp1, step);
-+	  step = temp1;
-+	}
-+
-+      for (HOST_WIDE_INT i = 0; i < rounded_size; i += probe_interval)
-+	{
-+	  rtx_insn *insn = emit_insn (gen_add2_insn (stack_pointer_rtx, step));
-+          add_reg_note (insn, REG_STACK_CHECK, const0_rtx);
-+
-+	  if (probe_interval > ARITH_FACTOR)
-+	    {
-+	      RTX_FRAME_RELATED_P (insn) = 1;
-+	      rtx adj = plus_constant (Pmode, stack_pointer_rtx, -probe_interval);
-+	      add_reg_note (insn, REG_CFA_ADJUST_CFA,
-+			    gen_rtx_SET (stack_pointer_rtx, adj));
-+	    }
-+
-+	  emit_stack_probe (plus_constant (Pmode, stack_pointer_rtx,
-+					   (probe_interval
-+					    - GET_MODE_SIZE (word_mode))));
-+	  emit_insn (gen_blockage ());
-+	}
-+      dump_stack_clash_frame_info (PROBE_INLINE, size != rounded_size);
-+    }
-+  else if (rounded_size)
-+    {
-+      /* Compute the ending address.  */
-+      unsigned int scratchreg = REGNO (temp1);
-+      emit_move_insn (temp1, GEN_INT (-rounded_size));
-+      rtx_insn *insn
-+	 = emit_insn (gen_add3_insn (temp1, stack_pointer_rtx, temp1));
-+
-+      /* For the initial allocation, we don't have a frame pointer
-+	 set up, so we always need CFI notes.  If we're doing the
-+	 final allocation, then we may have a frame pointer, in which
-+	 case it is the CFA, otherwise we need CFI notes.
-+
-+	 We can determine which allocation we are doing by looking at
-+	 the temporary register.  IP0 is the initial allocation, IP1
-+	 is the final allocation.  */
-+      if (scratchreg == IP0_REGNUM || !frame_pointer_needed)
-+	{
-+	  /* We want the CFA independent of the stack pointer for the
-+	     duration of the loop.  */
-+	  add_reg_note (insn, REG_CFA_DEF_CFA,
-+			plus_constant (Pmode, temp1,
-+				       (rounded_size + (orig_size - size))));
-+	  RTX_FRAME_RELATED_P (insn) = 1;
-+	}
-+
-+      /* This allocates and probes the stack.
-+
-+	 It also probes at a 4k interval regardless of the value of
-+	 PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL.  */
-+      insn = emit_insn (gen_probe_stack_range (stack_pointer_rtx,
-+					       stack_pointer_rtx, temp1));
-+
-+      /* Now reset the CFA register if needed.  */
-+      if (scratchreg == IP0_REGNUM || !frame_pointer_needed)
-+	{
-+	  add_reg_note (insn, REG_CFA_DEF_CFA,
-+			plus_constant (Pmode, stack_pointer_rtx,
-+				       (rounded_size + (orig_size - size))));
-+	  RTX_FRAME_RELATED_P (insn) = 1;
-+	}
-+
-+      emit_insn (gen_blockage ());
-+      dump_stack_clash_frame_info (PROBE_LOOP, size != rounded_size);
-+    }
-+  else
-+    dump_stack_clash_frame_info (PROBE_INLINE, size != rounded_size);
-+
-+  /* Handle any residuals.
-+     Note that any residual must be probed.  */
-+  if (residual)
-+    {
-+      aarch64_sub_sp (temp1, temp2, residual, true);
-+      add_reg_note (get_last_insn (), REG_STACK_CHECK, const0_rtx);
-+      emit_stack_probe (plus_constant (Pmode, stack_pointer_rtx,
-+				       (residual - GET_MODE_SIZE (word_mode))));
-+      emit_insn (gen_blockage ());
-+    }
-+  return;
-+}
-+
- /* Add a REG_CFA_EXPRESSION note to INSN to say that register REG
-    is saved at BASE + OFFSET.  */
- 
-@@ -4686,7 +4820,54 @@ aarch64_expand_prologue (void)
-   rtx ip0_rtx = gen_rtx_REG (Pmode, IP0_REGNUM);
-   rtx ip1_rtx = gen_rtx_REG (Pmode, IP1_REGNUM);
- 
--  aarch64_sub_sp (ip0_rtx, ip1_rtx, initial_adjust, true);
-+  /* We do not fully protect aarch64 against stack clash style attacks
-+     as doing so would be prohibitively expensive with less utility over
-+     time as newer compilers are deployed.
-+
-+     We assume the guard is at least 64k.  Furthermore, we assume that
-+     the caller has not pushed the stack pointer more than 1k into
-+     the guard.  A caller that pushes the stack pointer than 1k into
-+     the guard is considered invalid.
-+
-+     Note that the caller's ability to push the stack pointer into the
-+     guard is a function of the number and size of outgoing arguments and/or
-+     dynamic stack allocations due to the mandatory save of the link register
-+     in the caller's frame.
-+
-+     With those assumptions the callee can allocate up to 63k of stack
-+     space without probing.
-+
-+     When probing is needed, we emit a probe at the start of the prologue
-+     and every PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL bytes thereafter.
-+
-+     We have to track how much space has been allocated, but we do not
-+     track stores into the stack as implicit probes except for the
-+     fp/lr store.  */
-+  HOST_WIDE_INT guard_size
-+    = 1 << PARAM_VALUE (PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE);
-+  HOST_WIDE_INT guard_used_by_caller = 1024;
-+  if (flag_stack_clash_protection)
-+    {
-+      if (known_eq (frame_size, 0))
-+	dump_stack_clash_frame_info (NO_PROBE_NO_FRAME, false);
-+      else if (known_lt (initial_adjust, guard_size - guard_used_by_caller)
-+	       && known_lt (final_adjust, guard_size - guard_used_by_caller))
-+	dump_stack_clash_frame_info (NO_PROBE_SMALL_FRAME, true);
-+    }
-+
-+  /* In theory we should never have both an initial adjustment
-+     and a callee save adjustment.  Verify that is the case since the
-+     code below does not handle it for -fstack-clash-protection.  */
-+  gcc_assert (known_eq (initial_adjust, 0) || callee_adjust == 0);
-+
-+  /* Only probe if the initial adjustment is larger than the guard
-+     less the amount of the guard reserved for use by the caller's
-+     outgoing args.  */
-+  if (flag_stack_clash_protection
-+      && maybe_ge (initial_adjust, guard_size - guard_used_by_caller))
-+    aarch64_allocate_and_probe_stack_space (ip0_rtx, ip1_rtx, initial_adjust);
-+  else
-+    aarch64_sub_sp (ip0_rtx, ip1_rtx, initial_adjust, true);
- 
-   if (callee_adjust != 0)
-     aarch64_push_regs (reg1, reg2, callee_adjust);
-@@ -4742,7 +4923,31 @@ aarch64_expand_prologue (void)
- 			     callee_adjust != 0 || emit_frame_chain);
-   aarch64_save_callee_saves (DFmode, callee_offset, V0_REGNUM, V31_REGNUM,
- 			     callee_adjust != 0 || emit_frame_chain);
--  aarch64_sub_sp (ip1_rtx, ip0_rtx, final_adjust, !frame_pointer_needed);
-+
-+  /* We may need to probe the final adjustment as well.  */
-+  if (flag_stack_clash_protection && maybe_ne (final_adjust, 0))
-+    {
-+      /* First probe if the final adjustment is larger than the guard size
-+	 less the amount of the guard reserved for use by the caller's
-+	 outgoing args.  */
-+      if (maybe_ge (final_adjust, guard_size - guard_used_by_caller))
-+	aarch64_allocate_and_probe_stack_space (ip1_rtx, ip0_rtx,
-+						final_adjust);
-+      else
-+	aarch64_sub_sp (ip1_rtx, ip0_rtx, final_adjust, !frame_pointer_needed);
-+
-+      /* We must also probe if the final adjustment is larger than the guard
-+	 that is assumed used by the caller.  This may be sub-optimal.  */
-+      if (maybe_ge (final_adjust, guard_used_by_caller))
-+	{
-+	  if (dump_file)
-+	    fprintf (dump_file,
-+		     "Stack clash aarch64 large outgoing arg, probing\n");
-+	  emit_stack_probe (stack_pointer_rtx);
-+	}
-+    }
-+  else
-+    aarch64_sub_sp (ip1_rtx, ip0_rtx, final_adjust, !frame_pointer_needed);
- }
- 
- /* Return TRUE if we can use a simple_return insn.
-@@ -10476,6 +10681,12 @@ aarch64_override_options_internal (struct gcc_options *opts)
-       && opts->x_optimize >= aarch64_tune_params.prefetch->default_opt_level)
-     opts->x_flag_prefetch_loop_arrays = 1;
- 
-+  /* We assume the guard page is 64k.  */
-+  maybe_set_param_value (PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE,
-+			 16,
-+			 opts->x_param_values,
-+			 global_options_set.x_param_values);
-+
-   aarch64_override_options_after_change_1 (opts);
- }
- 
-@@ -17161,6 +17372,28 @@ aarch64_sched_can_speculate_insn (rtx_insn *insn)
-     }
- }
- 
-+/* It has been decided that to allow up to 1kb of outgoing argument
-+   space to be allocated w/o probing.  If more than 1kb of outgoing
-+   argment space is allocated, then it must be probed and the last
-+   probe must occur no more than 1kbyte away from the end of the
-+   allocated space.
-+
-+   This implies that the residual part of an alloca allocation may
-+   need probing in cases where the generic code might not otherwise
-+   think a probe is needed.
-+
-+   This target hook returns TRUE when allocating RESIDUAL bytes of
-+   alloca space requires an additional probe, otherwise FALSE is
-+   returned.  */
-+
-+static bool
-+aarch64_stack_clash_protection_final_dynamic_probe (rtx residual)
-+{
-+  return (residual == CONST0_RTX (Pmode)
-+	  || GET_CODE (residual) != CONST_INT
-+	  || INTVAL (residual) >= 1024);
-+}
-+
- /* Implement TARGET_COMPUTE_PRESSURE_CLASSES.  */
- 
- static int
-@@ -17669,6 +17902,10 @@ aarch64_libgcc_floating_mode_supported_p
- #undef TARGET_CONSTANT_ALIGNMENT
- #define TARGET_CONSTANT_ALIGNMENT aarch64_constant_alignment
- 
-+#undef TARGET_STACK_CLASH_PROTECTION_FINAL_DYNAMIC_PROBE
-+#define TARGET_STACK_CLASH_PROTECTION_FINAL_DYNAMIC_PROBE \
-+  aarch64_stack_clash_protection_final_dynamic_probe
-+
- #undef TARGET_COMPUTE_PRESSURE_CLASSES
- #define TARGET_COMPUTE_PRESSURE_CLASSES aarch64_compute_pressure_classes
- 
---- gcc/config/aarch64/aarch64.md
-+++ gcc/config/aarch64/aarch64.md
-@@ -5812,7 +5812,7 @@
- )
- 
- (define_insn "probe_stack_range"
--  [(set (match_operand:DI 0 "register_operand" "=r")
-+  [(set (match_operand:DI 0 "register_operand" "=rk")
- 	(unspec_volatile:DI [(match_operand:DI 1 "register_operand" "0")
- 			     (match_operand:DI 2 "register_operand" "r")]
- 			      UNSPECV_PROBE_STACK_RANGE))]
---- gcc/testsuite/gcc.target/aarch64/stack-check-12.c
-+++ gcc/testsuite/gcc.target/aarch64/stack-check-12.c
-@@ -0,0 +1,20 @@
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fstack-clash-protection --param stack-clash-protection-guard-size=12" } */
-+/* { dg-require-effective-target supports_stack_clash_protection } */
-+
-+extern void arf (unsigned long int *, unsigned long int *);
-+void
-+frob ()
-+{
-+  unsigned long int num[1000];
-+  unsigned long int den[1000];
-+  arf (den, num);
-+}
-+
-+/* This verifies that the scheduler did not break the dependencies
-+   by adjusting the offsets within the probe and that the scheduler
-+   did not reorder around the stack probes.  */
-+/* { dg-final { scan-assembler-times "sub\\tsp, sp, #4096\\n\\tstr\\txzr, .sp, 4088." 3 } } */
-+
-+
-+
---- gcc/testsuite/gcc.target/aarch64/stack-check-13.c
-+++ gcc/testsuite/gcc.target/aarch64/stack-check-13.c
-@@ -0,0 +1,28 @@
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fstack-clash-protection --param stack-clash-protection-guard-size=12" } */
-+/* { dg-require-effective-target supports_stack_clash_protection } */
-+
-+#define ARG32(X) X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
-+#define ARG192(X) ARG32(X),ARG32(X),ARG32(X),ARG32(X),ARG32(X),ARG32(X)
-+void out1(ARG192(__int128));
-+int t1(int);
-+
-+int t3(int x)
-+{
-+  if (x < 1000)
-+    return t1 (x) + 1;
-+
-+  out1 (ARG192(1));
-+  return 0;
-+}
-+
-+
-+
-+/* This test creates a large (> 1k) outgoing argument area that needs
-+   to be probed.  We don't test the exact size of the space or the
-+   exact offset to make the test a little less sensitive to trivial
-+   output changes.  */
-+/* { dg-final { scan-assembler-times "sub\\tsp, sp, #....\\n\\tstr\\txzr, \\\[sp" 1 } } */
-+
-+
-+
---- gcc/testsuite/gcc.target/aarch64/stack-check-14.c
-+++ gcc/testsuite/gcc.target/aarch64/stack-check-14.c
-@@ -0,0 +1,25 @@
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fstack-clash-protection --param stack-clash-protection-guard-size=12" } */
-+/* { dg-require-effective-target supports_stack_clash_protection } */
-+
-+int t1(int);
-+
-+int t2(int x)
-+{
-+  char *p = __builtin_alloca (4050);
-+  x = t1 (x);
-+  return p[x];
-+}
-+
-+
-+/* This test has a constant sized alloca that is smaller than the
-+   probe interval.  But it actually requires two probes instead
-+   of one because of the optimistic assumptions we made in the
-+   aarch64 prologue code WRT probing state. 
-+
-+   The form can change quite a bit so we just check for two
-+   probes without looking at the actual address.  */
-+/* { dg-final { scan-assembler-times "str\\txzr," 2 } } */
-+
-+
-+
---- gcc/testsuite/gcc.target/aarch64/stack-check-15.c
-+++ gcc/testsuite/gcc.target/aarch64/stack-check-15.c
-@@ -0,0 +1,24 @@
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fstack-clash-protection --param stack-clash-protection-guard-size=12" } */
-+/* { dg-require-effective-target supports_stack_clash_protection } */
-+
-+int t1(int);
-+
-+int t2(int x)
-+{
-+  char *p = __builtin_alloca (x);
-+  x = t1 (x);
-+  return p[x];
-+}
-+
-+
-+/* This test has a variable sized alloca.  It requires 3 probes.
-+   One in the loop, one for the residual and at the end of the
-+   alloca area. 
-+
-+   The form can change quite a bit so we just check for two
-+   probes without looking at the actual address.  */
-+/* { dg-final { scan-assembler-times "str\\txzr," 3 } } */
-+
-+
-+
---- gcc/testsuite/lib/target-supports.exp
-+++ gcc/testsuite/lib/target-supports.exp
-@@ -9201,14 +9201,9 @@ proc check_effective_target_autoincdec { } {
- # 
- proc check_effective_target_supports_stack_clash_protection { } {
- 
--   # Temporary until the target bits are fully ACK'd.
--#  if { [istarget aarch*-*-*] } {
--#	return 1
--#  }
--
-     if { [istarget x86_64-*-*] || [istarget i?86-*-*] 
- 	  || [istarget powerpc*-*-*] || [istarget rs6000*-*-*]
--	  || [istarget s390*-*-*] } {
-+	  || [istarget aarch64*-**] || [istarget s390*-*-*] } {
- 	return 1
-     }
-   return 0
-@@ -9217,9 +9212,9 @@ proc check_effective_target_supports_stack_clash_protection { } {
- # Return 1 if the target creates a frame pointer for non-leaf functions
- # Note we ignore cases where we apply tail call optimization here.
- proc check_effective_target_frame_pointer_for_non_leaf { } {
--  if { [istarget aarch*-*-*] } {
--	return 1
--  }
-+#  if { [istarget aarch*-*-*] } {
-+#	return 1
-+#  }
- 
-   # Solaris/x86 defaults to -fno-omit-frame-pointer.
-   if { [istarget i?86-*-solaris*] || [istarget x86_64-*-solaris*] } {

diff --git a/gcc8-rh1574936.patch b/gcc8-rh1574936.patch
deleted file mode 100644
index 32db990..0000000
--- a/gcc8-rh1574936.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-crt files and statically linked libgcc objects cause false positives
-in annobin coverage, so we add the assembler flag to generate notes
-for them.
-
-The patch also adds notes to libgcc_s.so, but this is harmless because
-these notes only confer that there is no other annobin markup.
-
-2018-07-25  Florian Weimer  <fweimer@redhat.com>
-
-	* Makefile.in (LIBGCC2_CFLAGS, CRTSTUFF_CFLAGS): Add
-	-Wa,--generate-missing-build-notes=yes.
-
---- libgcc/Makefile.in	2018-01-13 13:05:41.000000000 +0100
-+++ libgcc/Makefile.in	2018-07-25 13:15:02.036226940 +0200
-@@ -244,6 +244,7 @@
- LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(HOST_LIBGCC2_CFLAGS) \
- 		 $(LIBGCC2_DEBUG_CFLAGS) -DIN_LIBGCC2 \
- 		 -fbuilding-libgcc -fno-stack-protector \
-+		 -Wa,--generate-missing-build-notes=yes \
- 		 $(INHIBIT_LIBC_CFLAGS)
- 
- # Additional options to use when compiling libgcc2.a.
-@@ -297,6 +298,7 @@
-   $(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) \
-+  -Wa,--generate-missing-build-notes=yes \
-   $(INHIBIT_LIBC_CFLAGS)
- 
- # Extra flags to use when compiling crt{begin,end}.o.
-

diff --git a/gcc8-sparc-config-detection.patch b/gcc8-sparc-config-detection.patch
deleted file mode 100644
index bb06b35..0000000
--- a/gcc8-sparc-config-detection.patch
+++ /dev/null
@@ -1,40 +0,0 @@
---- gcc/config.gcc.jj	2008-04-24 15:42:46.000000000 -0500
-+++ gcc/config.gcc	2008-04-24 15:44:51.000000000 -0500
-@@ -2790,7 +2790,7 @@ sparc-*-rtems*)
- 	tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
- 	tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems"
- 	;;
--sparc-*-linux*)
-+sparc-*-linux* | sparcv9-*-linux*)
- 	tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
- 	extra_options="${extra_options} sparc/long-double-switch.opt"
- 	case ${target} in
-@@ -2844,7 +2844,7 @@ sparc64-*-rtems*)
- 	extra_options="${extra_options}"
- 	tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
- 	;;
--sparc64-*-linux*)
-+sparc64*-*-linux*)
- 	tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/default64.h sparc/linux64.h sparc/tso.h"
- 	extra_options="${extra_options} sparc/long-double-switch.opt"
- 	tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
---- libgcc/config.host.jj	2008-04-24 15:46:19.000000000 -0500
-+++ libgcc/config.host	2008-04-24 15:46:49.000000000 -0500
-@@ -1002,7 +1002,7 @@ sparc-*-elf*)
- 	tmake_file="${tmake_file} t-fdpbit t-crtfm"
- 	extra_parts="$extra_parts crti.o crtn.o crtfastmath.o"
- 	;;
--sparc-*-linux*)		# SPARC's running GNU/Linux, libc6
-+sparc-*-linux* | sparcv9-*-linux*)		# SPARC's running GNU/Linux, libc6
- 	tmake_file="${tmake_file} t-crtfm"
- 	if test "${host_address}" = 64; then
- 		tmake_file="$tmake_file sparc/t-linux64"
-@@ -1050,7 +1050,7 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*
- 	tmake_file="$tmake_file t-crtfm"
- 	extra_parts="$extra_parts crtfastmath.o"
- 	;;
--sparc64-*-linux*)		# 64-bit SPARC's running GNU/Linux
-+sparc64*-*-linux*)		# 64-bit SPARC's running GNU/Linux
- 	extra_parts="$extra_parts crtfastmath.o"
- 	tmake_file="${tmake_file} t-crtfm sparc/t-linux"
- 	if test "${host_address}" = 64; then

diff --git a/gcc9-Wno-format-security.patch b/gcc9-Wno-format-security.patch
new file mode 100644
index 0000000..cb21e5d
--- /dev/null
+++ b/gcc9-Wno-format-security.patch
@@ -0,0 +1,27 @@
+2017-02-25  Jakub Jelinek  <jakub@redhat.com>
+
+	* configure.ac: When adding -Wno-format, also add -Wno-format-security.
+	* configure: Regenerated.
+
+--- gcc/configure.ac.jj	2017-02-13 12:20:53.000000000 +0100
++++ gcc/configure.ac	2017-02-25 12:42:32.859175403 +0100
+@@ -481,7 +481,7 @@ AC_ARG_ENABLE(build-format-warnings,
+   AS_HELP_STRING([--disable-build-format-warnings],[don't use -Wformat while building GCC]),
+   [],[enable_build_format_warnings=yes])
+ AS_IF([test $enable_build_format_warnings = no],
+-      [wf_opt=-Wno-format],[wf_opt=])
++      [wf_opt="-Wno-format -Wno-format-security"],[wf_opt=])
+ ACX_PROG_CXX_WARNING_OPTS(
+ 	m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings ],
+ 		       [-Wcast-qual $wf_opt])), [loose_warn])
+--- gcc/configure.jj	2017-02-13 12:20:52.000000000 +0100
++++ gcc/configure	2017-02-25 12:42:50.041946391 +0100
+@@ -6647,7 +6647,7 @@ else
+ fi
+ 
+ if test $enable_build_format_warnings = no; then :
+-  wf_opt=-Wno-format
++  wf_opt="-Wno-format -Wno-format-security"
+ else
+   wf_opt=
+ fi

diff --git a/gcc9-d-shared-libphobos.patch b/gcc9-d-shared-libphobos.patch
new file mode 100644
index 0000000..392d631
--- /dev/null
+++ b/gcc9-d-shared-libphobos.patch
@@ -0,0 +1,20 @@
+2019-01-17  Jakub Jelinek  <jakub@redhat.com>
+
+	* d-spec.cc (lang_specific_driver): Make -shared-libphobos
+	the default rather than -static-libphobos.
+
+--- gcc/d/d-spec.cc.jj	2019-01-01 12:37:49.502444257 +0100
++++ gcc/d/d-spec.cc	2019-01-17 17:09:45.364949246 +0100
+@@ -405,9 +405,9 @@ lang_specific_driver (cl_decoded_option
+   /* Add `-lgphobos' if we haven't already done so.  */
+   if (phobos_library != PHOBOS_NOLINK && need_phobos)
+     {
+-      /* Default to static linking.  */
+-      if (phobos_library != PHOBOS_DYNAMIC)
+-	phobos_library = PHOBOS_STATIC;
++      /* Default to shared linking.  */
++      if (phobos_library != PHOBOS_STATIC)
++	phobos_library = PHOBOS_DYNAMIC;
+ 
+ #ifdef HAVE_LD_STATIC_DYNAMIC
+       if (phobos_library == PHOBOS_DYNAMIC && static_link)

diff --git a/gcc9-foffload-default.patch b/gcc9-foffload-default.patch
new file mode 100644
index 0000000..2ecd537
--- /dev/null
+++ b/gcc9-foffload-default.patch
@@ -0,0 +1,122 @@
+2019-01-17  Jakub Jelinek  <jakub@redhat.com>
+
+	* gcc.c (offload_targets_default): New variable.
+	(process_command): Set it if -foffload is defaulted.
+	(driver::maybe_putenv_OFFLOAD_TARGETS): Add OFFLOAD_TARGET_DEFAULT=1
+	into environment if -foffload has been defaulted.
+	* lto-wrapper.c (OFFLOAD_TARGET_DEFAULT_ENV): Define.
+	(compile_offload_image): If OFFLOAD_TARGET_DEFAULT
+	is in the environment, don't fail if corresponding mkoffload
+	can't be found.
+	(compile_images_for_offload_targets): Likewise.  Free and clear
+	offload_names if no valid offload is found.
+libgomp/
+	* target.c (gomp_load_plugin_for_device): If a plugin can't be
+	dlopened, assume it has no devices silently.
+
+--- gcc/gcc.c.jj	2017-01-17 10:28:40.000000000 +0100
++++ gcc/gcc.c	2017-01-20 16:26:29.649962902 +0100
+@@ -290,6 +290,10 @@ static const char *spec_host_machine = D
+ 
+ static char *offload_targets = NULL;
+ 
++/* Set to true if -foffload has not been used and offload_targets
++   is set to the configured in default.  */
++static bool offload_targets_default;
++
+ /* Nonzero if cross-compiling.
+    When -b is used, the value comes from the `specs' file.  */
+ 
+@@ -4457,7 +4461,10 @@ process_command (unsigned int decoded_op
+   /* If the user didn't specify any, default to all configured offload
+      targets.  */
+   if (ENABLE_OFFLOADING && offload_targets == NULL)
+-    handle_foffload_option (OFFLOAD_TARGETS);
++    {
++      handle_foffload_option (OFFLOAD_TARGETS);
++      offload_targets_default = true;
++    }
+ 
+   if (output_file
+       && strcmp (output_file, "-") != 0
+@@ -7693,6 +7700,8 @@ driver::maybe_putenv_OFFLOAD_TARGETS ()
+       obstack_grow (&collect_obstack, offload_targets,
+ 		    strlen (offload_targets) + 1);
+       xputenv (XOBFINISH (&collect_obstack, char *));
++      if (offload_targets_default)
++	  xputenv ("OFFLOAD_TARGET_DEFAULT=1");
+     }
+ 
+   free (offload_targets);
+--- gcc/lto-wrapper.c.jj	2017-01-01 12:45:34.000000000 +0100
++++ gcc/lto-wrapper.c	2017-01-20 16:34:18.294016997 +0100
+@@ -52,6 +52,7 @@ along with GCC; see the file COPYING3.
+ /* Environment variable, used for passing the names of offload targets from GCC
+    driver to lto-wrapper.  */
+ #define OFFLOAD_TARGET_NAMES_ENV	"OFFLOAD_TARGET_NAMES"
++#define OFFLOAD_TARGET_DEFAULT_ENV	"OFFLOAD_TARGET_DEFAULT"
+ 
+ enum lto_mode_d {
+   LTO_MODE_NONE,			/* Not doing LTO.  */
+@@ -820,6 +821,12 @@ compile_offload_image (const char *targe
+ 	break;
+       }
+ 
++  if (!compiler && getenv (OFFLOAD_TARGET_DEFAULT_ENV))
++    {
++      free_array_of_ptrs ((void **) paths, n_paths);
++      return NULL;
++    }
++
+   if (!compiler)
+     fatal_error (input_location,
+ 		 "could not find %s in %s (consider using '-B')\n", suffix + 1,
+@@ -883,6 +890,7 @@ compile_images_for_offload_targets (unsi
+   unsigned num_targets = parse_env_var (target_names, &names, NULL);
+ 
+   int next_name_entry = 0;
++  bool hsa_seen = false;
+   const char *compiler_path = getenv ("COMPILER_PATH");
+   if (!compiler_path)
+     goto out;
+@@ -895,18 +903,26 @@ compile_images_for_offload_targets (unsi
+       /* HSA does not use LTO-like streaming and a different compiler, skip
+ 	 it. */
+       if (strcmp (names[i], "hsa") == 0)
+-	continue;
++	{
++	  hsa_seen = true;
++	  continue;
++	}
+ 
+       offload_names[next_name_entry]
+ 	= compile_offload_image (names[i], compiler_path, in_argc, in_argv,
+ 				 compiler_opts, compiler_opt_count,
+ 				 linker_opts, linker_opt_count);
+       if (!offload_names[next_name_entry])
+-	fatal_error (input_location,
+-		     "problem with building target image for %s\n", names[i]);
++	continue;
+       next_name_entry++;
+     }
+ 
++  if (next_name_entry == 0 && !hsa_seen)
++    {
++      free (offload_names);
++      offload_names = NULL;
++    }
++
+  out:
+   free_array_of_ptrs ((void **) names, num_targets);
+ }
+--- libgomp/target.c.jj	2017-01-01 12:45:52.000000000 +0100
++++ libgomp/target.c	2017-01-20 20:12:13.756710875 +0100
+@@ -2356,7 +2356,7 @@ gomp_load_plugin_for_device (struct gomp
+ 
+   void *plugin_handle = dlopen (plugin_name, RTLD_LAZY);
+   if (!plugin_handle)
+-    goto dl_fail;
++    return 0;
+ 
+   /* Check if all required functions are available in the plugin and store
+      their handlers.  None of the symbols can legitimately be NULL,

diff --git a/gcc9-hack.patch b/gcc9-hack.patch
new file mode 100644
index 0000000..ba80c24
--- /dev/null
+++ b/gcc9-hack.patch
@@ -0,0 +1,126 @@
+--- libada/Makefile.in.jj	2019-01-09 13:01:18.015608205 +0100
++++ libada/Makefile.in	2019-01-11 18:16:23.441726931 +0100
+@@ -71,18 +71,40 @@ version := $(shell @get_gcc_base_ver@ $(
+ libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR)
+ ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR))
+ 
++DEFAULTMULTIFLAGS :=
++ifeq ($(MULTISUBDIR),)
++targ:=$(subst -, ,$(target))
++arch:=$(word 1,$(targ))
++ifeq ($(words $(targ)),2)
++osys:=$(word 2,$(targ))
++else
++osys:=$(word 3,$(targ))
++endif
++ifeq ($(strip $(filter-out i%86 x86_64 powerpc% ppc% s390% sparc% linux%, $(arch) $(osys))),)
++ifeq ($(shell $(CC) $(CFLAGS) -print-multi-os-directory),../lib64)
++DEFAULTMULTIFLAGS := -m64
++else
++ifeq ($(strip $(filter-out s390%, $(arch))),)
++DEFAULTMULTIFLAGS := -m31
++else
++DEFAULTMULTIFLAGS := -m32
++endif
++endif
++endif
++endif
++
+ # 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)" \
++        "LDFLAGS=$(LDFLAGS) $(DEFAULTMULTIFLAGS)" \
+         "LN_S=$(LN_S)" \
+         "SHELL=$(SHELL)" \
+-        "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS)" \
+-        "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \
+-        "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)" \
++        "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
++        "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
++        "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
+         "PICFLAG_FOR_TARGET=$(PICFLAG)" \
+         "THREAD_KIND=$(THREAD_KIND)" \
+         "TRACE=$(TRACE)" \
+@@ -93,7 +115,7 @@ LIBADA_FLAGS_TO_PASS = \
+         "exeext=.exeext.should.not.be.used " \
+ 	'CC=the.host.compiler.should.not.be.needed' \
+ 	"GCC_FOR_TARGET=$(CC)" \
+-        "CFLAGS=$(CFLAGS)"
++        "CFLAGS=$(CFLAGS) $(DEFAULTMULTIFLAGS)"
+ 
+ .PHONY: libada gnatlib gnatlib-shared gnatlib-sjlj gnatlib-zcx osconstool
+ 
+--- config-ml.in.jj	2019-01-09 12:50:16.646501448 +0100
++++ config-ml.in	2019-01-11 18:16:23.442726914 +0100
+@@ -511,6 +511,8 @@ multi-do:
+ 				ADAFLAGS="$(ADAFLAGS) $${flags}" \
+ 				prefix="$(prefix)" \
+ 				exec_prefix="$(exec_prefix)" \
++				mandir="$(mandir)" \
++				infodir="$(infodir)" \
+ 				GOCFLAGS="$(GOCFLAGS) $${flags}" \
+ 				GDCFLAGS="$(GDCFLAGS) $${flags}" \
+ 				CXXFLAGS="$(CXXFLAGS) $${flags}" \
+--- libcpp/macro.c.jj	2019-01-09 13:01:21.420552123 +0100
++++ libcpp/macro.c	2019-01-11 18:18:17.736876285 +0100
+@@ -3256,8 +3256,6 @@ static cpp_macro *
+ create_iso_definition (cpp_reader *pfile)
+ {
+   bool following_paste_op = false;
+-  const char *paste_op_error_msg =
+-    N_("'##' cannot appear at either end of a macro expansion");
+   unsigned int num_extra_tokens = 0;
+   unsigned nparms = 0;
+   cpp_hashnode **params = NULL;
+@@ -3382,7 +3380,9 @@ create_iso_definition (cpp_reader *pfile
+ 	     function-like macros, but not at the end.  */
+ 	  if (following_paste_op)
+ 	    {
+-	      cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
++	      cpp_error (pfile, CPP_DL_ERROR,
++			 "'##' cannot appear at either end of a macro "
++			 "expansion");
+ 	      goto out;
+ 	    }
+ 	  if (!vaopt_tracker.completed ())
+@@ -3397,7 +3397,9 @@ create_iso_definition (cpp_reader *pfile
+ 	     function-like macros, but not at the beginning.  */
+ 	  if (macro->count == 1)
+ 	    {
+-	      cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
++	      cpp_error (pfile, CPP_DL_ERROR,
++			 "'##' cannot appear at either end of a macro "
++			 "expansion");
+ 	      goto out;
+ 	    }
+ 
+--- libcpp/expr.c.jj	2019-01-09 13:01:22.415535734 +0100
++++ libcpp/expr.c	2019-01-11 18:16:23.444726882 +0100
+@@ -788,16 +788,17 @@ cpp_classify_number (cpp_reader *pfile,
+       if ((result & CPP_N_WIDTH) == CPP_N_LARGE
+ 	  && CPP_OPTION (pfile, cpp_warn_long_long))
+         {
+-          const char *message = CPP_OPTION (pfile, cplusplus) 
+-				? N_("use of C++11 long long integer constant")
+-		                : N_("use of C99 long long integer constant");
+-
+ 	  if (CPP_OPTION (pfile, c99))
+             cpp_warning_with_line (pfile, CPP_W_LONG_LONG, virtual_location,
+-				   0, message);
++				   0, CPP_OPTION (pfile, cplusplus)
++				      ? N_("use of C++11 long long integer constant")
++				      : N_("use of C99 long long integer constant"));
+           else
+             cpp_pedwarning_with_line (pfile, CPP_W_LONG_LONG,
+-				      virtual_location, 0, message);
++				      virtual_location, 0,
++				      CPP_OPTION (pfile, cplusplus)
++				      ? N_("use of C++11 long long integer constant")
++				      : N_("use of C99 long long integer constant"));
+         }
+ 
+       result |= CPP_N_INTEGER;

diff --git a/gcc9-i386-libgomp.patch b/gcc9-i386-libgomp.patch
new file mode 100644
index 0000000..520561e
--- /dev/null
+++ b/gcc9-i386-libgomp.patch
@@ -0,0 +1,11 @@
+--- libgomp/configure.tgt.jj	2008-01-10 20:53:48.000000000 +0100
++++ libgomp/configure.tgt	2008-03-27 12:44:51.000000000 +0100
+@@ -67,7 +67,7 @@ if test $enable_linux_futex = yes; then
+ 	    ;;
+ 	  *)
+ 	    if test -z "$with_arch"; then
+-	      XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
++	      XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
+ 	    fi
+ 	esac
+ 	;;

diff --git a/gcc9-isl-dl.patch b/gcc9-isl-dl.patch
new file mode 100644
index 0000000..46d3b0d
--- /dev/null
+++ b/gcc9-isl-dl.patch
@@ -0,0 +1,715 @@
+--- gcc/Makefile.in.jj	2015-06-06 10:00:25.000000000 +0200
++++ gcc/Makefile.in	2015-11-04 14:56:02.643536437 +0100
+@@ -1046,7 +1046,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY)
+ # and the system's installed libraries.
+ LIBS = @LIBS@ libcommon.a $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBBACKTRACE) \
+ 	$(LIBIBERTY) $(LIBDECNUMBER) $(HOST_LIBS)
+-BACKENDLIBS = $(ISLLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
++BACKENDLIBS = $(if $(ISLLIBS),-ldl) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
+ 	$(ZLIB)
+ # Any system libraries needed just for GNAT.
+ SYSLIBS = @GNAT_LIBEXC@
+@@ -2196,6 +2196,15 @@ $(out_object_file): $(out_file)
+ $(common_out_object_file): $(common_out_file)
+ 	$(COMPILE) $<
+ 	$(POSTCOMPILE)
++
++graphite%.o : \
++  ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
++graphite.o : \
++  ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
++graphite%.o : \
++  ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
++graphite.o : \
++  ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
+ #\f
+ # Generate header and source files from the machine description,
+ # and compile them.
+--- gcc/graphite.h.jj	2016-01-27 12:44:06.000000000 +0100
++++ gcc/graphite.h	2016-01-27 13:26:38.309876856 +0100
+@@ -39,6 +39,590 @@ along with GCC; see the file COPYING3.
+ #include <isl/schedule_node.h>
+ #include <isl/id.h>
+ #include <isl/space.h>
++#include <isl/version.h>
++#include <dlfcn.h>
++
++#define DYNSYMS \
++  DYNSYM (isl_aff_add_coefficient_si); \
++  DYNSYM (isl_aff_free); \
++  DYNSYM (isl_aff_get_space); \
++  DYNSYM (isl_aff_set_coefficient_si); \
++  DYNSYM (isl_aff_set_constant_si); \
++  DYNSYM (isl_aff_zero_on_domain); \
++  DYNSYM (isl_band_free); \
++  DYNSYM (isl_band_get_children); \
++  DYNSYM (isl_band_get_partial_schedule); \
++  DYNSYM (isl_band_has_children); \
++  DYNSYM (isl_band_list_free); \
++  DYNSYM (isl_band_list_get_band); \
++  DYNSYM (isl_band_list_get_ctx); \
++  DYNSYM (isl_band_list_n_band); \
++  DYNSYM (isl_band_n_member); \
++  DYNSYM (isl_basic_map_add_constraint); \
++  DYNSYM (isl_basic_map_project_out); \
++  DYNSYM (isl_basic_map_universe); \
++  DYNSYM (isl_constraint_set_coefficient_si); \
++  DYNSYM (isl_constraint_set_constant_si); \
++  DYNSYM (isl_ctx_alloc); \
++  DYNSYM (isl_ctx_free); \
++  DYNSYM (isl_equality_alloc); \
++  DYNSYM (isl_id_alloc); \
++  DYNSYM (isl_id_copy); \
++  DYNSYM (isl_id_free); \
++  DYNSYM (isl_inequality_alloc); \
++  DYNSYM (isl_local_space_copy); \
++  DYNSYM (isl_local_space_free); \
++  DYNSYM (isl_local_space_from_space); \
++  DYNSYM (isl_local_space_range); \
++  DYNSYM (isl_map_add_constraint); \
++  DYNSYM (isl_map_add_dims); \
++  DYNSYM (isl_map_align_params); \
++  DYNSYM (isl_map_apply_range); \
++  DYNSYM (isl_map_copy); \
++  DYNSYM (isl_map_dim); \
++  DYNSYM (isl_map_dump); \
++  DYNSYM (isl_map_equate); \
++  DYNSYM (isl_map_fix_si); \
++  DYNSYM (isl_map_flat_product); \
++  DYNSYM (isl_map_flat_range_product); \
++  DYNSYM (isl_map_free); \
++  DYNSYM (isl_map_from_basic_map); \
++  DYNSYM (isl_map_from_pw_aff); \
++  DYNSYM (isl_map_from_union_map); \
++  DYNSYM (isl_map_get_ctx); \
++  DYNSYM (isl_map_get_space); \
++  DYNSYM (isl_map_get_tuple_id); \
++  DYNSYM (isl_map_insert_dims); \
++  DYNSYM (isl_map_intersect); \
++  DYNSYM (isl_map_intersect_domain); \
++  DYNSYM (isl_map_intersect_range); \
++  DYNSYM (isl_map_is_empty); \
++  DYNSYM (isl_map_lex_ge); \
++  DYNSYM (isl_map_lex_le); \
++  DYNSYM (isl_map_n_out); \
++  DYNSYM (isl_map_range); \
++  DYNSYM (isl_map_set_tuple_id); \
++  DYNSYM (isl_map_universe); \
++  DYNSYM (isl_options_set_on_error); \
++  DYNSYM (isl_options_set_schedule_serialize_sccs); \
++  DYNSYM (isl_printer_set_yaml_style); \
++  DYNSYM (isl_options_set_schedule_max_constant_term); \
++  DYNSYM (isl_options_set_schedule_maximize_band_depth); \
++  DYNSYM (isl_printer_free); \
++  DYNSYM (isl_printer_print_aff); \
++  DYNSYM (isl_printer_print_constraint); \
++  DYNSYM (isl_printer_print_map); \
++  DYNSYM (isl_printer_print_set); \
++  DYNSYM (isl_printer_to_file); \
++  DYNSYM (isl_pw_aff_add); \
++  DYNSYM (isl_pw_aff_alloc); \
++  DYNSYM (isl_pw_aff_copy); \
++  DYNSYM (isl_pw_aff_eq_set); \
++  DYNSYM (isl_pw_aff_free); \
++  DYNSYM (isl_pw_aff_from_aff); \
++  DYNSYM (isl_pw_aff_ge_set); \
++  DYNSYM (isl_pw_aff_gt_set); \
++  DYNSYM (isl_pw_aff_is_cst); \
++  DYNSYM (isl_pw_aff_le_set); \
++  DYNSYM (isl_pw_aff_lt_set); \
++  DYNSYM (isl_pw_aff_mul); \
++  DYNSYM (isl_pw_aff_ne_set); \
++  DYNSYM (isl_pw_aff_nonneg_set); \
++  DYNSYM (isl_pw_aff_set_tuple_id); \
++  DYNSYM (isl_pw_aff_sub); \
++  DYNSYM (isl_pw_aff_zero_set); \
++  DYNSYM (isl_schedule_free); \
++  DYNSYM (isl_schedule_get_band_forest); \
++  DYNSYM (isl_set_add_constraint); \
++  DYNSYM (isl_set_add_dims); \
++  DYNSYM (isl_set_apply); \
++  DYNSYM (isl_set_coalesce); \
++  DYNSYM (isl_set_copy); \
++  DYNSYM (isl_set_dim); \
++  DYNSYM (isl_set_fix_si); \
++  DYNSYM (isl_set_free); \
++  DYNSYM (isl_set_get_space); \
++  DYNSYM (isl_set_get_tuple_id); \
++  DYNSYM (isl_set_intersect); \
++  DYNSYM (isl_set_is_empty); \
++  DYNSYM (isl_set_n_dim); \
++  DYNSYM (isl_set_nat_universe); \
++  DYNSYM (isl_set_project_out); \
++  DYNSYM (isl_set_set_tuple_id); \
++  DYNSYM (isl_set_universe); \
++  DYNSYM (isl_space_add_dims); \
++  DYNSYM (isl_space_alloc); \
++  DYNSYM (isl_space_copy); \
++  DYNSYM (isl_space_dim); \
++  DYNSYM (isl_space_domain); \
++  DYNSYM (isl_space_find_dim_by_id); \
++  DYNSYM (isl_space_free); \
++  DYNSYM (isl_space_from_domain); \
++  DYNSYM (isl_space_get_tuple_id); \
++  DYNSYM (isl_space_params_alloc); \
++  DYNSYM (isl_space_range); \
++  DYNSYM (isl_space_set_alloc); \
++  DYNSYM (isl_space_set_dim_id); \
++  DYNSYM (isl_space_set_tuple_id); \
++  DYNSYM (isl_union_map_add_map); \
++  DYNSYM (isl_union_map_align_params); \
++  DYNSYM (isl_union_map_apply_domain); \
++  DYNSYM (isl_union_map_apply_range); \
++  DYNSYM (isl_union_map_compute_flow); \
++  DYNSYM (isl_union_map_copy); \
++  DYNSYM (isl_union_map_empty); \
++  DYNSYM (isl_union_map_flat_range_product); \
++  DYNSYM (isl_union_map_foreach_map); \
++  DYNSYM (isl_union_map_free); \
++  DYNSYM (isl_union_map_from_map); \
++  DYNSYM (isl_union_map_get_ctx); \
++  DYNSYM (isl_union_map_get_space); \
++  DYNSYM (isl_union_map_gist_domain); \
++  DYNSYM (isl_union_map_gist_range); \
++  DYNSYM (isl_union_map_intersect_domain); \
++  DYNSYM (isl_union_map_is_empty); \
++  DYNSYM (isl_union_map_subtract); \
++  DYNSYM (isl_union_map_union); \
++  DYNSYM (isl_union_set_add_set); \
++  DYNSYM (isl_union_set_compute_schedule); \
++  DYNSYM (isl_union_set_copy); \
++  DYNSYM (isl_union_set_empty); \
++  DYNSYM (isl_union_set_from_set); \
++  DYNSYM (isl_aff_add_constant_val); \
++  DYNSYM (isl_aff_get_coefficient_val); \
++  DYNSYM (isl_aff_get_ctx); \
++  DYNSYM (isl_aff_mod_val); \
++  DYNSYM (isl_ast_build_ast_from_schedule); \
++  DYNSYM (isl_ast_build_free); \
++  DYNSYM (isl_ast_build_from_context); \
++  DYNSYM (isl_ast_build_get_ctx); \
++  DYNSYM (isl_ast_build_get_schedule); \
++  DYNSYM (isl_ast_build_get_schedule_space); \
++  DYNSYM (isl_ast_build_set_before_each_for); \
++  DYNSYM (isl_ast_build_set_options); \
++  DYNSYM (isl_ast_expr_free); \
++  DYNSYM (isl_ast_expr_from_val); \
++  DYNSYM (isl_ast_expr_get_ctx); \
++  DYNSYM (isl_ast_expr_get_id); \
++  DYNSYM (isl_ast_expr_get_op_arg); \
++  DYNSYM (isl_ast_expr_get_op_n_arg); \
++  DYNSYM (isl_ast_expr_get_op_type); \
++  DYNSYM (isl_ast_expr_get_type); \
++  DYNSYM (isl_ast_expr_get_val); \
++  DYNSYM (isl_ast_expr_sub); \
++  DYNSYM (isl_ast_node_block_get_children); \
++  DYNSYM (isl_ast_node_for_get_body); \
++  DYNSYM (isl_ast_node_for_get_cond); \
++  DYNSYM (isl_ast_node_for_get_inc); \
++  DYNSYM (isl_ast_node_for_get_init); \
++  DYNSYM (isl_ast_node_for_get_iterator); \
++  DYNSYM (isl_ast_node_free); \
++  DYNSYM (isl_ast_node_get_annotation); \
++  DYNSYM (isl_ast_node_get_type); \
++  DYNSYM (isl_ast_node_if_get_cond); \
++  DYNSYM (isl_ast_node_if_get_else); \
++  DYNSYM (isl_ast_node_if_get_then); \
++  DYNSYM (isl_ast_node_list_free); \
++  DYNSYM (isl_ast_node_list_get_ast_node); \
++  DYNSYM (isl_ast_node_list_n_ast_node); \
++  DYNSYM (isl_ast_node_user_get_expr); \
++  DYNSYM (isl_constraint_set_coefficient_val); \
++  DYNSYM (isl_constraint_set_constant_val); \
++  DYNSYM (isl_id_get_user); \
++  DYNSYM (isl_local_space_get_ctx); \
++  DYNSYM (isl_map_fix_val); \
++  DYNSYM (isl_options_set_ast_build_atomic_upper_bound); \
++  DYNSYM (isl_printer_print_ast_node); \
++  DYNSYM (isl_printer_print_str); \
++  DYNSYM (isl_printer_set_output_format); \
++  DYNSYM (isl_pw_aff_mod_val); \
++  DYNSYM (isl_schedule_constraints_compute_schedule); \
++  DYNSYM (isl_schedule_constraints_on_domain); \
++  DYNSYM (isl_schedule_constraints_set_coincidence); \
++  DYNSYM (isl_schedule_constraints_set_proximity); \
++  DYNSYM (isl_schedule_constraints_set_validity); \
++  DYNSYM (isl_set_get_dim_id); \
++  DYNSYM (isl_set_max_val); \
++  DYNSYM (isl_set_min_val); \
++  DYNSYM (isl_set_params); \
++  DYNSYM (isl_space_align_params); \
++  DYNSYM (isl_space_map_from_domain_and_range); \
++  DYNSYM (isl_space_set_tuple_name); \
++  DYNSYM (isl_space_wrap); \
++  DYNSYM (isl_union_map_from_domain_and_range); \
++  DYNSYM (isl_union_map_range); \
++  DYNSYM (isl_union_set_union); \
++  DYNSYM (isl_union_set_universe); \
++  DYNSYM (isl_val_2exp); \
++  DYNSYM (isl_val_add_ui); \
++  DYNSYM (isl_val_copy); \
++  DYNSYM (isl_val_free); \
++  DYNSYM (isl_val_int_from_si); \
++  DYNSYM (isl_val_int_from_ui); \
++  DYNSYM (isl_val_mul); \
++  DYNSYM (isl_val_neg); \
++  DYNSYM (isl_val_sub); \
++  DYNSYM (isl_printer_print_union_map); \
++  DYNSYM (isl_pw_aff_get_ctx); \
++  DYNSYM (isl_val_is_int); \
++  DYNSYM (isl_ctx_get_max_operations); \
++  DYNSYM (isl_ctx_set_max_operations); \
++  DYNSYM (isl_ctx_last_error); \
++  DYNSYM (isl_ctx_reset_operations); \
++  DYNSYM (isl_map_coalesce); \
++  DYNSYM (isl_printer_print_schedule); \
++  DYNSYM (isl_set_set_dim_id); \
++  DYNSYM (isl_union_map_coalesce); \
++  DYNSYM (isl_multi_val_set_val); \
++  DYNSYM (isl_multi_val_zero); \
++  DYNSYM (isl_options_set_schedule_max_coefficient); \
++  DYNSYM (isl_options_set_tile_scale_tile_loops); \
++  DYNSYM (isl_schedule_copy); \
++  DYNSYM (isl_schedule_get_map); \
++  DYNSYM (isl_schedule_map_schedule_node_bottom_up); \
++  DYNSYM (isl_schedule_node_band_get_permutable); \
++  DYNSYM (isl_schedule_node_band_get_space); \
++  DYNSYM (isl_schedule_node_band_tile); \
++  DYNSYM (isl_schedule_node_child); \
++  DYNSYM (isl_schedule_node_free); \
++  DYNSYM (isl_schedule_node_get_child); \
++  DYNSYM (isl_schedule_node_get_ctx); \
++  DYNSYM (isl_schedule_node_get_type); \
++  DYNSYM (isl_schedule_node_n_children); \
++  DYNSYM (isl_union_map_is_equal); \
++  DYNSYM (isl_union_access_info_compute_flow); \
++  DYNSYM (isl_union_access_info_from_sink); \
++  DYNSYM (isl_union_access_info_set_may_source); \
++  DYNSYM (isl_union_access_info_set_must_source); \
++  DYNSYM (isl_union_access_info_set_schedule); \
++  DYNSYM (isl_union_flow_free); \
++  DYNSYM (isl_union_flow_get_may_dependence); \
++  DYNSYM (isl_union_flow_get_must_dependence); \
++  DYNSYM (isl_aff_var_on_domain); \
++  DYNSYM (isl_multi_aff_from_aff); \
++  DYNSYM (isl_schedule_get_ctx); \
++  DYNSYM (isl_multi_aff_set_tuple_id); \
++  DYNSYM (isl_multi_aff_dim); \
++  DYNSYM (isl_schedule_get_domain); \
++  DYNSYM (isl_union_set_is_empty); \
++  DYNSYM (isl_union_set_get_space); \
++  DYNSYM (isl_union_pw_multi_aff_empty); \
++  DYNSYM (isl_union_set_foreach_set); \
++  DYNSYM (isl_union_set_free); \
++  DYNSYM (isl_multi_union_pw_aff_from_union_pw_multi_aff); \
++  DYNSYM (isl_multi_union_pw_aff_apply_multi_aff); \
++  DYNSYM (isl_schedule_insert_partial_schedule); \
++  DYNSYM (isl_union_pw_multi_aff_free); \
++  DYNSYM (isl_pw_multi_aff_project_out_map); \
++  DYNSYM (isl_union_pw_multi_aff_add_pw_multi_aff); \
++  DYNSYM (isl_schedule_from_domain); \
++  DYNSYM (isl_schedule_sequence); \
++  DYNSYM (isl_ast_build_node_from_schedule); \
++  DYNSYM (isl_ast_node_mark_get_node); \
++  DYNSYM (isl_schedule_node_band_member_get_ast_loop_type); \
++  DYNSYM (isl_schedule_node_band_member_set_ast_loop_type); \
++  DYNSYM (isl_val_n_abs_num_chunks); \
++  DYNSYM (isl_val_get_abs_num_chunks); \
++  DYNSYM (isl_val_int_from_chunks); \
++  DYNSYM (isl_val_is_neg); \
++  DYNSYM (isl_version); \
++  DYNSYM (isl_options_get_on_error); \
++  DYNSYM (isl_ctx_reset_error);
++
++extern struct isl_pointers_s__
++{
++  bool inited;
++  void *h;
++#define DYNSYM(x) __typeof (x) *p_##x
++  DYNSYMS
++#undef DYNSYM
++} isl_pointers__;
++
++#define isl_aff_add_coefficient_si (*isl_pointers__.p_isl_aff_add_coefficient_si)
++#define isl_aff_free (*isl_pointers__.p_isl_aff_free)
++#define isl_aff_get_space (*isl_pointers__.p_isl_aff_get_space)
++#define isl_aff_set_coefficient_si (*isl_pointers__.p_isl_aff_set_coefficient_si)
++#define isl_aff_set_constant_si (*isl_pointers__.p_isl_aff_set_constant_si)
++#define isl_aff_zero_on_domain (*isl_pointers__.p_isl_aff_zero_on_domain)
++#define isl_band_free (*isl_pointers__.p_isl_band_free)
++#define isl_band_get_children (*isl_pointers__.p_isl_band_get_children)
++#define isl_band_get_partial_schedule (*isl_pointers__.p_isl_band_get_partial_schedule)
++#define isl_band_has_children (*isl_pointers__.p_isl_band_has_children)
++#define isl_band_list_free (*isl_pointers__.p_isl_band_list_free)
++#define isl_band_list_get_band (*isl_pointers__.p_isl_band_list_get_band)
++#define isl_band_list_get_ctx (*isl_pointers__.p_isl_band_list_get_ctx)
++#define isl_band_list_n_band (*isl_pointers__.p_isl_band_list_n_band)
++#define isl_band_n_member (*isl_pointers__.p_isl_band_n_member)
++#define isl_basic_map_add_constraint (*isl_pointers__.p_isl_basic_map_add_constraint)
++#define isl_basic_map_project_out (*isl_pointers__.p_isl_basic_map_project_out)
++#define isl_basic_map_universe (*isl_pointers__.p_isl_basic_map_universe)
++#define isl_constraint_set_coefficient_si (*isl_pointers__.p_isl_constraint_set_coefficient_si)
++#define isl_constraint_set_constant_si (*isl_pointers__.p_isl_constraint_set_constant_si)
++#define isl_ctx_alloc (*isl_pointers__.p_isl_ctx_alloc)
++#define isl_ctx_free (*isl_pointers__.p_isl_ctx_free)
++#define isl_equality_alloc (*isl_pointers__.p_isl_equality_alloc)
++#define isl_id_alloc (*isl_pointers__.p_isl_id_alloc)
++#define isl_id_copy (*isl_pointers__.p_isl_id_copy)
++#define isl_id_free (*isl_pointers__.p_isl_id_free)
++#define isl_inequality_alloc (*isl_pointers__.p_isl_inequality_alloc)
++#define isl_local_space_copy (*isl_pointers__.p_isl_local_space_copy)
++#define isl_local_space_free (*isl_pointers__.p_isl_local_space_free)
++#define isl_local_space_from_space (*isl_pointers__.p_isl_local_space_from_space)
++#define isl_local_space_range (*isl_pointers__.p_isl_local_space_range)
++#define isl_map_add_constraint (*isl_pointers__.p_isl_map_add_constraint)
++#define isl_map_add_dims (*isl_pointers__.p_isl_map_add_dims)
++#define isl_map_align_params (*isl_pointers__.p_isl_map_align_params)
++#define isl_map_apply_range (*isl_pointers__.p_isl_map_apply_range)
++#define isl_map_copy (*isl_pointers__.p_isl_map_copy)
++#define isl_map_dim (*isl_pointers__.p_isl_map_dim)
++#define isl_map_dump (*isl_pointers__.p_isl_map_dump)
++#define isl_map_equate (*isl_pointers__.p_isl_map_equate)
++#define isl_map_fix_si (*isl_pointers__.p_isl_map_fix_si)
++#define isl_map_flat_product (*isl_pointers__.p_isl_map_flat_product)
++#define isl_map_flat_range_product (*isl_pointers__.p_isl_map_flat_range_product)
++#define isl_map_free (*isl_pointers__.p_isl_map_free)
++#define isl_map_from_basic_map (*isl_pointers__.p_isl_map_from_basic_map)
++#define isl_map_from_pw_aff (*isl_pointers__.p_isl_map_from_pw_aff)
++#define isl_map_from_union_map (*isl_pointers__.p_isl_map_from_union_map)
++#define isl_map_get_ctx (*isl_pointers__.p_isl_map_get_ctx)
++#define isl_map_get_space (*isl_pointers__.p_isl_map_get_space)
++#define isl_map_get_tuple_id (*isl_pointers__.p_isl_map_get_tuple_id)
++#define isl_map_insert_dims (*isl_pointers__.p_isl_map_insert_dims)
++#define isl_map_intersect (*isl_pointers__.p_isl_map_intersect)
++#define isl_map_intersect_domain (*isl_pointers__.p_isl_map_intersect_domain)
++#define isl_map_intersect_range (*isl_pointers__.p_isl_map_intersect_range)
++#define isl_map_is_empty (*isl_pointers__.p_isl_map_is_empty)
++#define isl_map_lex_ge (*isl_pointers__.p_isl_map_lex_ge)
++#define isl_map_lex_le (*isl_pointers__.p_isl_map_lex_le)
++#define isl_map_n_out (*isl_pointers__.p_isl_map_n_out)
++#define isl_map_range (*isl_pointers__.p_isl_map_range)
++#define isl_map_set_tuple_id (*isl_pointers__.p_isl_map_set_tuple_id)
++#define isl_map_universe (*isl_pointers__.p_isl_map_universe)
++#define isl_options_set_on_error (*isl_pointers__.p_isl_options_set_on_error)
++#define isl_options_set_schedule_serialize_sccs (*isl_pointers__.p_isl_options_set_schedule_serialize_sccs)
++#define isl_printer_set_yaml_style (*isl_pointers__.p_isl_printer_set_yaml_style)
++#define isl_options_set_schedule_max_constant_term (*isl_pointers__.p_isl_options_set_schedule_max_constant_term)
++#define isl_options_set_schedule_maximize_band_depth (*isl_pointers__.p_isl_options_set_schedule_maximize_band_depth)
++#define isl_printer_free (*isl_pointers__.p_isl_printer_free)
++#define isl_printer_print_aff (*isl_pointers__.p_isl_printer_print_aff)
++#define isl_printer_print_constraint (*isl_pointers__.p_isl_printer_print_constraint)
++#define isl_printer_print_map (*isl_pointers__.p_isl_printer_print_map)
++#define isl_printer_print_set (*isl_pointers__.p_isl_printer_print_set)
++#define isl_printer_to_file (*isl_pointers__.p_isl_printer_to_file)
++#define isl_pw_aff_add (*isl_pointers__.p_isl_pw_aff_add)
++#define isl_pw_aff_alloc (*isl_pointers__.p_isl_pw_aff_alloc)
++#define isl_pw_aff_copy (*isl_pointers__.p_isl_pw_aff_copy)
++#define isl_pw_aff_eq_set (*isl_pointers__.p_isl_pw_aff_eq_set)
++#define isl_pw_aff_free (*isl_pointers__.p_isl_pw_aff_free)
++#define isl_pw_aff_from_aff (*isl_pointers__.p_isl_pw_aff_from_aff)
++#define isl_pw_aff_ge_set (*isl_pointers__.p_isl_pw_aff_ge_set)
++#define isl_pw_aff_gt_set (*isl_pointers__.p_isl_pw_aff_gt_set)
++#define isl_pw_aff_is_cst (*isl_pointers__.p_isl_pw_aff_is_cst)
++#define isl_pw_aff_le_set (*isl_pointers__.p_isl_pw_aff_le_set)
++#define isl_pw_aff_lt_set (*isl_pointers__.p_isl_pw_aff_lt_set)
++#define isl_pw_aff_mul (*isl_pointers__.p_isl_pw_aff_mul)
++#define isl_pw_aff_ne_set (*isl_pointers__.p_isl_pw_aff_ne_set)
++#define isl_pw_aff_nonneg_set (*isl_pointers__.p_isl_pw_aff_nonneg_set)
++#define isl_pw_aff_set_tuple_id (*isl_pointers__.p_isl_pw_aff_set_tuple_id)
++#define isl_pw_aff_sub (*isl_pointers__.p_isl_pw_aff_sub)
++#define isl_pw_aff_zero_set (*isl_pointers__.p_isl_pw_aff_zero_set)
++#define isl_schedule_free (*isl_pointers__.p_isl_schedule_free)
++#define isl_schedule_get_band_forest (*isl_pointers__.p_isl_schedule_get_band_forest)
++#define isl_set_add_constraint (*isl_pointers__.p_isl_set_add_constraint)
++#define isl_set_add_dims (*isl_pointers__.p_isl_set_add_dims)
++#define isl_set_apply (*isl_pointers__.p_isl_set_apply)
++#define isl_set_coalesce (*isl_pointers__.p_isl_set_coalesce)
++#define isl_set_copy (*isl_pointers__.p_isl_set_copy)
++#define isl_set_dim (*isl_pointers__.p_isl_set_dim)
++#define isl_set_fix_si (*isl_pointers__.p_isl_set_fix_si)
++#define isl_set_free (*isl_pointers__.p_isl_set_free)
++#define isl_set_get_space (*isl_pointers__.p_isl_set_get_space)
++#define isl_set_get_tuple_id (*isl_pointers__.p_isl_set_get_tuple_id)
++#define isl_set_intersect (*isl_pointers__.p_isl_set_intersect)
++#define isl_set_is_empty (*isl_pointers__.p_isl_set_is_empty)
++#define isl_set_n_dim (*isl_pointers__.p_isl_set_n_dim)
++#define isl_set_nat_universe (*isl_pointers__.p_isl_set_nat_universe)
++#define isl_set_project_out (*isl_pointers__.p_isl_set_project_out)
++#define isl_set_set_tuple_id (*isl_pointers__.p_isl_set_set_tuple_id)
++#define isl_set_universe (*isl_pointers__.p_isl_set_universe)
++#define isl_space_add_dims (*isl_pointers__.p_isl_space_add_dims)
++#define isl_space_alloc (*isl_pointers__.p_isl_space_alloc)
++#define isl_space_copy (*isl_pointers__.p_isl_space_copy)
++#define isl_space_dim (*isl_pointers__.p_isl_space_dim)
++#define isl_space_domain (*isl_pointers__.p_isl_space_domain)
++#define isl_space_find_dim_by_id (*isl_pointers__.p_isl_space_find_dim_by_id)
++#define isl_space_free (*isl_pointers__.p_isl_space_free)
++#define isl_space_from_domain (*isl_pointers__.p_isl_space_from_domain)
++#define isl_space_get_tuple_id (*isl_pointers__.p_isl_space_get_tuple_id)
++#define isl_space_params_alloc (*isl_pointers__.p_isl_space_params_alloc)
++#define isl_space_range (*isl_pointers__.p_isl_space_range)
++#define isl_space_set_alloc (*isl_pointers__.p_isl_space_set_alloc)
++#define isl_space_set_dim_id (*isl_pointers__.p_isl_space_set_dim_id)
++#define isl_space_set_tuple_id (*isl_pointers__.p_isl_space_set_tuple_id)
++#define isl_union_map_add_map (*isl_pointers__.p_isl_union_map_add_map)
++#define isl_union_map_align_params (*isl_pointers__.p_isl_union_map_align_params)
++#define isl_union_map_apply_domain (*isl_pointers__.p_isl_union_map_apply_domain)
++#define isl_union_map_apply_range (*isl_pointers__.p_isl_union_map_apply_range)
++#define isl_union_map_compute_flow (*isl_pointers__.p_isl_union_map_compute_flow)
++#define isl_union_map_copy (*isl_pointers__.p_isl_union_map_copy)
++#define isl_union_map_empty (*isl_pointers__.p_isl_union_map_empty)
++#define isl_union_map_flat_range_product (*isl_pointers__.p_isl_union_map_flat_range_product)
++#define isl_union_map_foreach_map (*isl_pointers__.p_isl_union_map_foreach_map)
++#define isl_union_map_free (*isl_pointers__.p_isl_union_map_free)
++#define isl_union_map_from_map (*isl_pointers__.p_isl_union_map_from_map)
++#define isl_union_map_get_ctx (*isl_pointers__.p_isl_union_map_get_ctx)
++#define isl_union_map_get_space (*isl_pointers__.p_isl_union_map_get_space)
++#define isl_union_map_gist_domain (*isl_pointers__.p_isl_union_map_gist_domain)
++#define isl_union_map_gist_range (*isl_pointers__.p_isl_union_map_gist_range)
++#define isl_union_map_intersect_domain (*isl_pointers__.p_isl_union_map_intersect_domain)
++#define isl_union_map_is_empty (*isl_pointers__.p_isl_union_map_is_empty)
++#define isl_union_map_subtract (*isl_pointers__.p_isl_union_map_subtract)
++#define isl_union_map_union (*isl_pointers__.p_isl_union_map_union)
++#define isl_union_set_add_set (*isl_pointers__.p_isl_union_set_add_set)
++#define isl_union_set_compute_schedule (*isl_pointers__.p_isl_union_set_compute_schedule)
++#define isl_union_set_copy (*isl_pointers__.p_isl_union_set_copy)
++#define isl_union_set_empty (*isl_pointers__.p_isl_union_set_empty)
++#define isl_union_set_from_set (*isl_pointers__.p_isl_union_set_from_set)
++#define isl_aff_add_constant_val (*isl_pointers__.p_isl_aff_add_constant_val)
++#define isl_aff_get_coefficient_val (*isl_pointers__.p_isl_aff_get_coefficient_val)
++#define isl_aff_get_ctx (*isl_pointers__.p_isl_aff_get_ctx)
++#define isl_aff_mod_val (*isl_pointers__.p_isl_aff_mod_val)
++#define isl_ast_build_ast_from_schedule (*isl_pointers__.p_isl_ast_build_ast_from_schedule)
++#define isl_ast_build_free (*isl_pointers__.p_isl_ast_build_free)
++#define isl_ast_build_from_context (*isl_pointers__.p_isl_ast_build_from_context)
++#define isl_ast_build_get_ctx (*isl_pointers__.p_isl_ast_build_get_ctx)
++#define isl_ast_build_get_schedule (*isl_pointers__.p_isl_ast_build_get_schedule)
++#define isl_ast_build_get_schedule_space (*isl_pointers__.p_isl_ast_build_get_schedule_space)
++#define isl_ast_build_set_before_each_for (*isl_pointers__.p_isl_ast_build_set_before_each_for)
++#define isl_ast_build_set_options (*isl_pointers__.p_isl_ast_build_set_options)
++#define isl_ast_expr_free (*isl_pointers__.p_isl_ast_expr_free)
++#define isl_ast_expr_from_val (*isl_pointers__.p_isl_ast_expr_from_val)
++#define isl_ast_expr_get_ctx (*isl_pointers__.p_isl_ast_expr_get_ctx)
++#define isl_ast_expr_get_id (*isl_pointers__.p_isl_ast_expr_get_id)
++#define isl_ast_expr_get_op_arg (*isl_pointers__.p_isl_ast_expr_get_op_arg)
++#define isl_ast_expr_get_op_n_arg (*isl_pointers__.p_isl_ast_expr_get_op_n_arg)
++#define isl_ast_expr_get_op_type (*isl_pointers__.p_isl_ast_expr_get_op_type)
++#define isl_ast_expr_get_type (*isl_pointers__.p_isl_ast_expr_get_type)
++#define isl_ast_expr_get_val (*isl_pointers__.p_isl_ast_expr_get_val)
++#define isl_ast_expr_sub (*isl_pointers__.p_isl_ast_expr_sub)
++#define isl_ast_node_block_get_children (*isl_pointers__.p_isl_ast_node_block_get_children)
++#define isl_ast_node_for_get_body (*isl_pointers__.p_isl_ast_node_for_get_body)
++#define isl_ast_node_for_get_cond (*isl_pointers__.p_isl_ast_node_for_get_cond)
++#define isl_ast_node_for_get_inc (*isl_pointers__.p_isl_ast_node_for_get_inc)
++#define isl_ast_node_for_get_init (*isl_pointers__.p_isl_ast_node_for_get_init)
++#define isl_ast_node_for_get_iterator (*isl_pointers__.p_isl_ast_node_for_get_iterator)
++#define isl_ast_node_free (*isl_pointers__.p_isl_ast_node_free)
++#define isl_ast_node_get_annotation (*isl_pointers__.p_isl_ast_node_get_annotation)
++#define isl_ast_node_get_type (*isl_pointers__.p_isl_ast_node_get_type)
++#define isl_ast_node_if_get_cond (*isl_pointers__.p_isl_ast_node_if_get_cond)
++#define isl_ast_node_if_get_else (*isl_pointers__.p_isl_ast_node_if_get_else)
++#define isl_ast_node_if_get_then (*isl_pointers__.p_isl_ast_node_if_get_then)
++#define isl_ast_node_list_free (*isl_pointers__.p_isl_ast_node_list_free)
++#define isl_ast_node_list_get_ast_node (*isl_pointers__.p_isl_ast_node_list_get_ast_node)
++#define isl_ast_node_list_n_ast_node (*isl_pointers__.p_isl_ast_node_list_n_ast_node)
++#define isl_ast_node_user_get_expr (*isl_pointers__.p_isl_ast_node_user_get_expr)
++#define isl_constraint_set_coefficient_val (*isl_pointers__.p_isl_constraint_set_coefficient_val)
++#define isl_constraint_set_constant_val (*isl_pointers__.p_isl_constraint_set_constant_val)
++#define isl_id_get_user (*isl_pointers__.p_isl_id_get_user)
++#define isl_local_space_get_ctx (*isl_pointers__.p_isl_local_space_get_ctx)
++#define isl_map_fix_val (*isl_pointers__.p_isl_map_fix_val)
++#define isl_options_set_ast_build_atomic_upper_bound (*isl_pointers__.p_isl_options_set_ast_build_atomic_upper_bound)
++#define isl_printer_print_ast_node (*isl_pointers__.p_isl_printer_print_ast_node)
++#define isl_printer_print_str (*isl_pointers__.p_isl_printer_print_str)
++#define isl_printer_set_output_format (*isl_pointers__.p_isl_printer_set_output_format)
++#define isl_pw_aff_mod_val (*isl_pointers__.p_isl_pw_aff_mod_val)
++#define isl_schedule_constraints_compute_schedule (*isl_pointers__.p_isl_schedule_constraints_compute_schedule)
++#define isl_schedule_constraints_on_domain (*isl_pointers__.p_isl_schedule_constraints_on_domain)
++#define isl_schedule_constraints_set_coincidence (*isl_pointers__.p_isl_schedule_constraints_set_coincidence)
++#define isl_schedule_constraints_set_proximity (*isl_pointers__.p_isl_schedule_constraints_set_proximity)
++#define isl_schedule_constraints_set_validity (*isl_pointers__.p_isl_schedule_constraints_set_validity)
++#define isl_set_get_dim_id (*isl_pointers__.p_isl_set_get_dim_id)
++#define isl_set_max_val (*isl_pointers__.p_isl_set_max_val)
++#define isl_set_min_val (*isl_pointers__.p_isl_set_min_val)
++#define isl_set_params (*isl_pointers__.p_isl_set_params)
++#define isl_space_align_params (*isl_pointers__.p_isl_space_align_params)
++#define isl_space_map_from_domain_and_range (*isl_pointers__.p_isl_space_map_from_domain_and_range)
++#define isl_space_set_tuple_name (*isl_pointers__.p_isl_space_set_tuple_name)
++#define isl_space_wrap (*isl_pointers__.p_isl_space_wrap)
++#define isl_union_map_from_domain_and_range (*isl_pointers__.p_isl_union_map_from_domain_and_range)
++#define isl_union_map_range (*isl_pointers__.p_isl_union_map_range)
++#define isl_union_set_union (*isl_pointers__.p_isl_union_set_union)
++#define isl_union_set_universe (*isl_pointers__.p_isl_union_set_universe)
++#define isl_val_2exp (*isl_pointers__.p_isl_val_2exp)
++#define isl_val_add_ui (*isl_pointers__.p_isl_val_add_ui)
++#define isl_val_copy (*isl_pointers__.p_isl_val_copy)
++#define isl_val_free (*isl_pointers__.p_isl_val_free)
++#define isl_val_int_from_si (*isl_pointers__.p_isl_val_int_from_si)
++#define isl_val_int_from_ui (*isl_pointers__.p_isl_val_int_from_ui)
++#define isl_val_mul (*isl_pointers__.p_isl_val_mul)
++#define isl_val_neg (*isl_pointers__.p_isl_val_neg)
++#define isl_val_sub (*isl_pointers__.p_isl_val_sub)
++#define isl_printer_print_union_map (*isl_pointers__.p_isl_printer_print_union_map)
++#define isl_pw_aff_get_ctx (*isl_pointers__.p_isl_pw_aff_get_ctx)
++#define isl_val_is_int (*isl_pointers__.p_isl_val_is_int)
++#define isl_ctx_get_max_operations (*isl_pointers__.p_isl_ctx_get_max_operations)
++#define isl_ctx_set_max_operations (*isl_pointers__.p_isl_ctx_set_max_operations)
++#define isl_ctx_last_error (*isl_pointers__.p_isl_ctx_last_error)
++#define isl_ctx_reset_operations (*isl_pointers__.p_isl_ctx_reset_operations)
++#define isl_map_coalesce (*isl_pointers__.p_isl_map_coalesce)
++#define isl_printer_print_schedule (*isl_pointers__.p_isl_printer_print_schedule)
++#define isl_set_set_dim_id (*isl_pointers__.p_isl_set_set_dim_id)
++#define isl_union_map_coalesce (*isl_pointers__.p_isl_union_map_coalesce)
++#define isl_multi_val_set_val (*isl_pointers__.p_isl_multi_val_set_val)
++#define isl_multi_val_zero (*isl_pointers__.p_isl_multi_val_zero)
++#define isl_options_set_schedule_max_coefficient (*isl_pointers__.p_isl_options_set_schedule_max_coefficient)
++#define isl_options_set_tile_scale_tile_loops (*isl_pointers__.p_isl_options_set_tile_scale_tile_loops)
++#define isl_schedule_copy (*isl_pointers__.p_isl_schedule_copy)
++#define isl_schedule_get_map (*isl_pointers__.p_isl_schedule_get_map)
++#define isl_schedule_map_schedule_node_bottom_up (*isl_pointers__.p_isl_schedule_map_schedule_node_bottom_up)
++#define isl_schedule_node_band_get_permutable (*isl_pointers__.p_isl_schedule_node_band_get_permutable)
++#define isl_schedule_node_band_get_space (*isl_pointers__.p_isl_schedule_node_band_get_space)
++#define isl_schedule_node_band_tile (*isl_pointers__.p_isl_schedule_node_band_tile)
++#define isl_schedule_node_child (*isl_pointers__.p_isl_schedule_node_child)
++#define isl_schedule_node_free (*isl_pointers__.p_isl_schedule_node_free)
++#define isl_schedule_node_get_child (*isl_pointers__.p_isl_schedule_node_get_child)
++#define isl_schedule_node_get_ctx (*isl_pointers__.p_isl_schedule_node_get_ctx)
++#define isl_schedule_node_get_type (*isl_pointers__.p_isl_schedule_node_get_type)
++#define isl_schedule_node_n_children (*isl_pointers__.p_isl_schedule_node_n_children)
++#define isl_union_map_is_equal (*isl_pointers__.p_isl_union_map_is_equal)
++#define isl_union_access_info_compute_flow (*isl_pointers__.p_isl_union_access_info_compute_flow)
++#define isl_union_access_info_from_sink (*isl_pointers__.p_isl_union_access_info_from_sink)
++#define isl_union_access_info_set_may_source (*isl_pointers__.p_isl_union_access_info_set_may_source)
++#define isl_union_access_info_set_must_source (*isl_pointers__.p_isl_union_access_info_set_must_source)
++#define isl_union_access_info_set_schedule (*isl_pointers__.p_isl_union_access_info_set_schedule)
++#define isl_union_flow_free (*isl_pointers__.p_isl_union_flow_free)
++#define isl_union_flow_get_may_dependence (*isl_pointers__.p_isl_union_flow_get_may_dependence)
++#define isl_union_flow_get_must_dependence (*isl_pointers__.p_isl_union_flow_get_must_dependence)
++#define isl_aff_var_on_domain (*isl_pointers__.p_isl_aff_var_on_domain)
++#define isl_multi_aff_from_aff (*isl_pointers__.p_isl_multi_aff_from_aff)
++#define isl_schedule_get_ctx (*isl_pointers__.p_isl_schedule_get_ctx)
++#define isl_multi_aff_set_tuple_id (*isl_pointers__.p_isl_multi_aff_set_tuple_id)
++#define isl_multi_aff_dim (*isl_pointers__.p_isl_multi_aff_dim)
++#define isl_schedule_get_domain (*isl_pointers__.p_isl_schedule_get_domain)
++#define isl_union_set_is_empty (*isl_pointers__.p_isl_union_set_is_empty)
++#define isl_union_set_get_space (*isl_pointers__.p_isl_union_set_get_space)
++#define isl_union_pw_multi_aff_empty (*isl_pointers__.p_isl_union_pw_multi_aff_empty)
++#define isl_union_set_foreach_set (*isl_pointers__.p_isl_union_set_foreach_set)
++#define isl_union_set_free (*isl_pointers__.p_isl_union_set_free)
++#define isl_multi_union_pw_aff_from_union_pw_multi_aff (*isl_pointers__.p_isl_multi_union_pw_aff_from_union_pw_multi_aff)
++#define isl_multi_union_pw_aff_apply_multi_aff (*isl_pointers__.p_isl_multi_union_pw_aff_apply_multi_aff)
++#define isl_schedule_insert_partial_schedule (*isl_pointers__.p_isl_schedule_insert_partial_schedule)
++#define isl_union_pw_multi_aff_free (*isl_pointers__.p_isl_union_pw_multi_aff_free)
++#define isl_pw_multi_aff_project_out_map (*isl_pointers__.p_isl_pw_multi_aff_project_out_map)
++#define isl_union_pw_multi_aff_add_pw_multi_aff (*isl_pointers__.p_isl_union_pw_multi_aff_add_pw_multi_aff)
++#define isl_schedule_from_domain (*isl_pointers__.p_isl_schedule_from_domain)
++#define isl_schedule_sequence (*isl_pointers__.p_isl_schedule_sequence)
++#define isl_ast_build_node_from_schedule (*isl_pointers__.p_isl_ast_build_node_from_schedule)
++#define isl_ast_node_mark_get_node (*isl_pointers__.p_isl_ast_node_mark_get_node)
++#define isl_schedule_node_band_member_get_ast_loop_type (*isl_pointers__.p_isl_schedule_node_band_member_get_ast_loop_type)
++#define isl_schedule_node_band_member_set_ast_loop_type (*isl_pointers__.p_isl_schedule_node_band_member_set_ast_loop_type)
++#define isl_val_n_abs_num_chunks (*isl_pointers__.p_isl_val_n_abs_num_chunks)
++#define isl_val_get_abs_num_chunks (*isl_pointers__.p_isl_val_get_abs_num_chunks)
++#define isl_val_int_from_chunks (*isl_pointers__.p_isl_val_int_from_chunks)
++#define isl_val_is_neg (*isl_pointers__.p_isl_val_is_neg)
++#define isl_version (*isl_pointers__.p_isl_version)
++#define isl_options_get_on_error (*isl_pointers__.p_isl_options_get_on_error)
++#define isl_ctx_reset_error (*isl_pointers__.p_isl_ctx_reset_error)
+ 
+ typedef struct poly_dr *poly_dr_p;
+ 
+@@ -461,5 +1045,6 @@ extern void build_scops (vec<scop_p> *);
+ extern void dot_all_sese (FILE *, vec<sese_l> &);
+ extern void dot_sese (sese_l &);
+ extern void dot_cfg ();
++extern const char *get_isl_version (bool);
+ 
+ #endif
+--- gcc/graphite.c.jj	2015-11-04 14:15:32.000000000 +0100
++++ gcc/graphite.c	2015-11-04 14:56:02.645536409 +0100
+@@ -60,6 +60,35 @@ along with GCC; see the file COPYING3.
+ #include "tree-into-ssa.h"
+ #include "graphite.h"
+ 
++__typeof (isl_pointers__) isl_pointers__;
++
++static bool
++init_isl_pointers (void)
++{
++  void *h;
++
++  if (isl_pointers__.inited)
++    return isl_pointers__.h != NULL;
++  h = dlopen ("libisl.so.15", RTLD_LAZY);
++  isl_pointers__.h = h;
++  if (h == NULL)
++    return false;
++#define DYNSYM(x) \
++  do \
++    { \
++      union { __typeof (isl_pointers__.p_##x) p; void *q; } u; \
++      u.q = dlsym (h, #x); \
++      if (u.q == NULL) \
++	return false; \
++      isl_pointers__.p_##x = u.p; \
++    } \
++  while (0)
++  DYNSYMS
++#undef DYNSYM
++  isl_pointers__.inited = true;
++  return true;
++}
++
+ /* Print global statistics to FILE.  */
+ 
+ static void
+@@ -365,6 +394,15 @@ graphite_transform_loops (void)
+   if (parallelized_function_p (cfun->decl))
+     return;
+ 
++  if (number_of_loops (cfun) <= 1)
++    return;
++
++  if (!init_isl_pointers ())
++    {
++      sorry ("Graphite loop optimizations cannot be used");
++      return;
++    }
++
+   calculate_dominance_info (CDI_DOMINATORS);
+ 
+   /* We rely on post-dominators during merging of SESE regions so those
+@@ -455,6 +493,14 @@ graphite_transform_loops (void)
+     }
+ }
+ 
++const char *
++get_isl_version (bool force)
++{
++  if (force)
++    init_isl_pointers ();
++  return (isl_pointers__.inited && isl_version) ? isl_version () : "none";
++}
++
+ #else /* If isl is not available: #ifndef HAVE_isl.  */
+ 
+ static void
+--- gcc/toplev.c.jj	2017-02-19 13:02:31.000000000 +0100
++++ gcc/toplev.c	2017-02-19 16:50:25.536301350 +0100
+@@ -94,6 +94,7 @@ along with GCC; see the file COPYING3.
+ 
+ #ifdef HAVE_isl
+ #include <isl/version.h>
++extern const char *get_isl_version (bool);
+ #endif
+ 
+ static void general_init (const char *, bool);
+@@ -683,7 +684,7 @@ print_version (FILE *file, const char *i
+ #ifndef HAVE_isl
+ 	   "none"
+ #else
+-	   isl_version ()
++	   get_isl_version (*indent == 0)
+ #endif
+ 	   );
+   if (strcmp (GCC_GMP_STRINGIFY_VERSION, gmp_version))

diff --git a/gcc9-libgomp-omp_h-multilib.patch b/gcc9-libgomp-omp_h-multilib.patch
new file mode 100644
index 0000000..d0e98d1
--- /dev/null
+++ b/gcc9-libgomp-omp_h-multilib.patch
@@ -0,0 +1,17 @@
+2008-06-09  Jakub Jelinek  <jakub@redhat.com>
+
+	* omp.h.in (omp_nest_lock_t): Fix up for Linux multilibs.
+
+--- libgomp/omp.h.in.jj	2008-06-09 13:34:05.000000000 +0200
++++ libgomp/omp.h.in	2008-06-09 13:34:48.000000000 +0200
+@@ -42,8 +42,8 @@ typedef struct
+ 
+ typedef struct
+ {
+-  unsigned char _x[@OMP_NEST_LOCK_SIZE@] 
+-    __attribute__((__aligned__(@OMP_NEST_LOCK_ALIGN@)));
++  unsigned char _x[8 + sizeof (void *)] 
++    __attribute__((__aligned__(sizeof (void *))));
+ } omp_nest_lock_t;
+ #endif
+ 

diff --git a/gcc9-libstdc++-docs.patch b/gcc9-libstdc++-docs.patch
new file mode 100644
index 0000000..282206a
--- /dev/null
+++ b/gcc9-libstdc++-docs.patch
@@ -0,0 +1,24 @@
+--- libstdc++-v3/doc/html/index.html.jj	2011-01-03 12:53:21.282829010 +0100
++++ libstdc++-v3/doc/html/index.html	2011-01-04 18:06:28.999851145 +0100
+@@ -5,6 +5,8 @@
+       <a class="link" href="https://www.fsf.org" target="_top">FSF
+       </a>
+     </p><p>
++      Release 9.0.0
++    </p><p>
+       Permission is granted to copy, distribute and/or modify this
+       document under the terms of the GNU Free Documentation
+       License, Version 1.2 or any later version published by the
+--- libstdc++-v3/doc/html/api.html.jj	2011-01-03 12:53:21.000000000 +0100
++++ libstdc++-v3/doc/html/api.html	2011-01-04 18:12:01.672757784 +0100
+@@ -20,7 +20,9 @@
+   member functions for the library classes, finding out what is in a
+   particular include file, looking at inheritance diagrams, etc.
+ </p><p>
+-  The API documentation, rendered into HTML, can be viewed online
++  The API documentation, rendered into HTML, can be viewed locally
++  <a class="link" href="api/index.html" target="_top">for the 9.0.0 release</a>,
++  online
+   <a class="link" href="http://gcc.gnu.org/onlinedocs/" target="_top">for each GCC release</a>
+   and
+   <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/index.html" target="_top">

diff --git a/gcc9-libtool-no-rpath.patch b/gcc9-libtool-no-rpath.patch
new file mode 100644
index 0000000..466c661
--- /dev/null
+++ b/gcc9-libtool-no-rpath.patch
@@ -0,0 +1,27 @@
+libtool sucks.
+--- ltmain.sh.jj	2007-12-07 14:53:21.000000000 +0100
++++ ltmain.sh	2008-09-05 21:51:48.000000000 +0200
+@@ -5394,6 +5394,7 @@ EOF
+ 	  rpath="$finalize_rpath"
+ 	  test "$mode" != relink && rpath="$compile_rpath$rpath"
+ 	  for libdir in $rpath; do
++	    case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
+ 	    if test -n "$hardcode_libdir_flag_spec"; then
+ 	      if test -n "$hardcode_libdir_separator"; then
+ 		if test -z "$hardcode_libdirs"; then
+@@ -6071,6 +6072,7 @@ EOF
+       rpath=
+       hardcode_libdirs=
+       for libdir in $compile_rpath $finalize_rpath; do
++	case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
+ 	if test -n "$hardcode_libdir_flag_spec"; then
+ 	  if test -n "$hardcode_libdir_separator"; then
+ 	    if test -z "$hardcode_libdirs"; then
+@@ -6120,6 +6122,7 @@ EOF
+       rpath=
+       hardcode_libdirs=
+       for libdir in $finalize_rpath; do
++	case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
+ 	if test -n "$hardcode_libdir_flag_spec"; then
+ 	  if test -n "$hardcode_libdir_separator"; then
+ 	    if test -z "$hardcode_libdirs"; then

diff --git a/gcc9-no-add-needed.patch b/gcc9-no-add-needed.patch
new file mode 100644
index 0000000..5817299
--- /dev/null
+++ b/gcc9-no-add-needed.patch
@@ -0,0 +1,37 @@
+2010-02-08  Roland McGrath  <roland@redhat.com>
+
+	* config/gnu-user.h (LINK_EH_SPEC): Pass --no-add-needed to the linker.
+	* config/alpha/elf.h (LINK_EH_SPEC): Likewise.
+	* config/ia64/linux.h (LINK_EH_SPEC): Likewise.
+
+--- gcc/config/alpha/elf.h.jj	2011-01-03 12:52:31.118056764 +0100
++++ gcc/config/alpha/elf.h	2011-01-04 18:14:10.931874160 +0100
+@@ -168,5 +168,5 @@ extern int alpha_this_gpdisp_sequence_nu
+    I imagine that other systems will catch up.  In the meantime, it
+    doesn't harm to make sure that the data exists to be used later.  */
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-#define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
++#define LINK_EH_SPEC "--no-add-needed %{!static|static-pie:--eh-frame-hdr} "
+ #endif
+--- gcc/config/ia64/linux.h.jj	2011-01-03 13:02:11.462994522 +0100
++++ gcc/config/ia64/linux.h	2011-01-04 18:14:10.931874160 +0100
+@@ -76,7 +76,7 @@ do {						\
+    Signalize that because we have fde-glibc, we don't need all C shared libs
+    linked against -lgcc_s.  */
+ #undef LINK_EH_SPEC
+-#define LINK_EH_SPEC ""
++#define LINK_EH_SPEC "--no-add-needed "
+ 
+ #undef TARGET_INIT_LIBFUNCS
+ #define TARGET_INIT_LIBFUNCS ia64_soft_fp_init_libfuncs
+--- gcc/config/gnu-user.h.jj	2011-01-03 12:53:03.739057299 +0100
++++ gcc/config/gnu-user.h	2011-01-04 18:14:10.932814884 +0100
+@@ -106,7 +106,7 @@ see the files COPYING3 and COPYING.RUNTI
+ #define LIB_SPEC GNU_USER_TARGET_LIB_SPEC
+ 
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-#define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
++#define LINK_EH_SPEC "--no-add-needed %{!static|static-pie:--eh-frame-hdr} "
+ #endif
+ 
+ #define GNU_USER_TARGET_LINK_GCC_C_SEQUENCE_SPEC \

diff --git a/gcc9-pr88044.patch b/gcc9-pr88044.patch
new file mode 100644
index 0000000..67be8f0
--- /dev/null
+++ b/gcc9-pr88044.patch
@@ -0,0 +1,18 @@
+2019-01-18  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/88044
+	* tree-ssa-loop-niter.c (number_of_iterations_cond): If condition
+	is false in the first iteration, but !every_iteration, return false
+	instead of true with niter->niter zero.
+
+--- gcc/tree-ssa-loop-niter.c.jj	2019-01-10 11:43:02.254577008 +0100
++++ gcc/tree-ssa-loop-niter.c	2019-01-18 19:51:00.245504728 +0100
+@@ -1824,6 +1824,8 @@ number_of_iterations_cond (struct loop *
+   tree tem = fold_binary (code, boolean_type_node, iv0->base, iv1->base);
+   if (tem && integer_zerop (tem))
+     {
++      if (!every_iteration)
++	return false;
+       niter->niter = build_int_cst (unsigned_type_for (type), 0);
+       niter->max = 0;
+       return true;

diff --git a/gcc9-pr88714.patch b/gcc9-pr88714.patch
new file mode 100644
index 0000000..3a02e7e
--- /dev/null
+++ b/gcc9-pr88714.patch
@@ -0,0 +1,122 @@
+2019-01-17  Jakub Jelinek  <jakub@redhat.com>
+
+	PR bootstrap/88714
+	* config/arm/ldrdstrd.md: If alias sets on the SImode MEMs are
+	different, clear alias set on the DImode MEM.  Clear MEM_EXPR.
+
+	* gcc.c-torture/execute/pr88714.c: New test.
+
+--- gcc/config/arm/ldrdstrd.md.jj	2019-01-16 09:35:03.851334889 +0100
++++ gcc/config/arm/ldrdstrd.md	2019-01-17 17:37:40.860791779 +0100
+@@ -39,6 +39,10 @@ (define_peephole2 ; ldrd
+     /* In ARM state, the destination registers of LDRD/STRD must be
+        consecutive. We emit DImode access.  */
+     operands[0] = gen_rtx_REG (DImode, REGNO (operands[0]));
++    if (MEM_ALIAS_SET (operands[2])
++	&& MEM_ALIAS_SET (operands[2]) != MEM_ALIAS_SET (operands[3]))
++      set_mem_alias_set (operands[2], 0);
++    set_mem_expr (operands[2], NULL_TREE);
+     operands[2] = adjust_address (operands[2], DImode, 0);
+     /* Emit [(set (match_dup 0) (match_dup 2))] */
+     emit_insn (gen_rtx_SET (operands[0], operands[2]));
+@@ -71,6 +75,10 @@ (define_peephole2 ; strd
+     /* In ARM state, the destination registers of LDRD/STRD must be
+        consecutive. We emit DImode access.  */
+     operands[0] = gen_rtx_REG (DImode, REGNO (operands[0]));
++    if (MEM_ALIAS_SET (operands[2])
++	&& MEM_ALIAS_SET (operands[2]) != MEM_ALIAS_SET (operands[3]))
++      set_mem_alias_set (operands[2], 0);
++    set_mem_expr (operands[2], NULL_TREE);
+     operands[2] = adjust_address (operands[2], DImode, 0);
+     /* Emit [(set (match_dup 2) (match_dup 0))]  */
+     emit_insn (gen_rtx_SET (operands[2], operands[0]));
+@@ -106,6 +114,10 @@ (define_peephole2 ; strd of constants
+   else if (TARGET_ARM)
+   {
+    rtx tmp = gen_rtx_REG (DImode, REGNO (operands[0]));
++    if (MEM_ALIAS_SET (operands[2])
++	&& MEM_ALIAS_SET (operands[2]) != MEM_ALIAS_SET (operands[3]))
++      set_mem_alias_set (operands[2], 0);
++    set_mem_expr (operands[2], NULL_TREE);
+    operands[2] = adjust_address (operands[2], DImode, 0);
+    /* Emit the pattern:
+       [(set (match_dup 0) (match_dup 4))
+@@ -149,6 +161,10 @@ (define_peephole2 ; strd of constants
+   else if (TARGET_ARM)
+   {
+    rtx tmp = gen_rtx_REG (DImode, REGNO (operands[0]));
++    if (MEM_ALIAS_SET (operands[2])
++	&& MEM_ALIAS_SET (operands[2]) != MEM_ALIAS_SET (operands[3]))
++      set_mem_alias_set (operands[2], 0);
++    set_mem_expr (operands[2], NULL_TREE);
+    operands[2] = adjust_address (operands[2], DImode, 0);
+    /* Emit the pattern
+       [(set (match_dup 0) (match_dup 4))
+@@ -203,6 +219,10 @@ (define_peephole2 ; swap the destination
+     else
+      {
+         operands[0] = gen_rtx_REG (DImode, REGNO (operands[0]));
++	if (MEM_ALIAS_SET (operands[2])
++	    && MEM_ALIAS_SET (operands[2]) != MEM_ALIAS_SET (operands[3]))
++	  set_mem_alias_set (operands[2], 0);
++	set_mem_expr (operands[2], NULL_TREE);
+         operands[2] = adjust_address (operands[2], DImode, 0);
+      }
+    }
+@@ -238,6 +258,10 @@ (define_peephole2 ; swap the destination
+     else
+      {
+         operands[0] = gen_rtx_REG (DImode, REGNO (operands[0]));
++	if (MEM_ALIAS_SET (operands[2])
++	    && MEM_ALIAS_SET (operands[2]) != MEM_ALIAS_SET (operands[3]))
++	  set_mem_alias_set (operands[2], 0);
++	set_mem_expr (operands[2], NULL_TREE);
+         operands[2] = adjust_address (operands[2], DImode, 0);
+      }
+    }
+--- gcc/testsuite/gcc.c-torture/execute/pr88714.c.jj	2019-01-17 17:39:42.074828164 +0100
++++ gcc/testsuite/gcc.c-torture/execute/pr88714.c	2019-01-17 17:21:26.810575783 +0100
+@@ -0,0 +1,43 @@
++/* PR bootstrap/88714 */
++
++struct S { int a, b, c; int *d; };
++struct T { int *e, *f, *g; } *t = 0;
++int *o = 0;
++
++__attribute__((noipa))
++void bar (int *x, int y, int z, int w)
++{
++  if (w == -1)
++    {
++      if (x != 0 || y != 0 || z != 0)
++	__builtin_abort ();
++    }
++  else if (w != 0 || x != t->g || y != 0 || z != 12)
++    __builtin_abort ();
++}
++
++__attribute__((noipa)) void
++foo (struct S *x, struct S *y, int *z, int w)
++{
++  *o = w;
++  if (w)
++    bar (0, 0, 0, -1);
++  x->d = z;
++  if (y->d)
++    y->c = y->c + y->d[0];
++  bar (t->g, 0, y->c, 0);
++}
++
++int
++main ()
++{
++  int a[4] = { 8, 9, 10, 11 };
++  struct S s = { 1, 2, 3, &a[0] };
++  struct T u = { 0, 0, &a[3] };
++  o = &a[2];
++  t = &u;
++  foo (&s, &s, &a[1], 5);
++  if (s.c != 12 || s.d != &a[1])
++    __builtin_abort ();
++  return 0;
++}

diff --git a/gcc9-pr88901.patch b/gcc9-pr88901.patch
new file mode 100644
index 0000000..f4faeab
--- /dev/null
+++ b/gcc9-pr88901.patch
@@ -0,0 +1,45 @@
+2019-01-18  Jakub Jelinek  <jakub@redhat.com>
+
+	PR sanitizer/88901
+	* typeck.c (cp_build_binary_op): Don't instrument
+	SANITIZE_POINTER_COMPARE if processing_template_decl.
+	(pointer_diff): Similarly for SANITIZE_POINTER_SUBTRACT.
+
+	* g++.dg/asan/pr88901.C: New test.
+
+--- gcc/cp/typeck.c.jj	2019-01-18 09:13:58.580790058 +0100
++++ gcc/cp/typeck.c	2019-01-18 11:53:45.941734135 +0100
+@@ -5233,6 +5233,7 @@ cp_build_binary_op (const op_location_t
+ 	}
+ 
+       if ((code0 == POINTER_TYPE || code1 == POINTER_TYPE)
++	  && !processing_template_decl
+ 	  && sanitize_flags_p (SANITIZE_POINTER_COMPARE))
+ 	{
+ 	  op0 = save_expr (op0);
+@@ -5650,7 +5651,8 @@ pointer_diff (location_t loc, tree op0,
+   else
+     inttype = restype;
+ 
+-  if (sanitize_flags_p (SANITIZE_POINTER_SUBTRACT))
++  if (!processing_template_decl
++      && sanitize_flags_p (SANITIZE_POINTER_SUBTRACT))
+     {
+       op0 = save_expr (op0);
+       op1 = save_expr (op1);
+--- gcc/testsuite/g++.dg/asan/pr88901.C.jj	2019-01-18 11:55:42.398826983 +0100
++++ gcc/testsuite/g++.dg/asan/pr88901.C	2019-01-18 11:55:26.559086374 +0100
+@@ -0,0 +1,13 @@
++// PR sanitizer/88901
++// { dg-do compile }
++// { dg-options "-fsanitize=address -fsanitize=pointer-compare" }
++
++template <typename T>
++struct A {
++  void foo() {
++    auto d = [](char *x, char *y) {
++      for (char *p = x; p + sizeof(T) <= y; p += sizeof(T))
++        reinterpret_cast<T *>(p)->~T();
++    };
++  }
++};

diff --git a/gcc9-rh1574936.patch b/gcc9-rh1574936.patch
new file mode 100644
index 0000000..32db990
--- /dev/null
+++ b/gcc9-rh1574936.patch
@@ -0,0 +1,31 @@
+crt files and statically linked libgcc objects cause false positives
+in annobin coverage, so we add the assembler flag to generate notes
+for them.
+
+The patch also adds notes to libgcc_s.so, but this is harmless because
+these notes only confer that there is no other annobin markup.
+
+2018-07-25  Florian Weimer  <fweimer@redhat.com>
+
+	* Makefile.in (LIBGCC2_CFLAGS, CRTSTUFF_CFLAGS): Add
+	-Wa,--generate-missing-build-notes=yes.
+
+--- libgcc/Makefile.in	2018-01-13 13:05:41.000000000 +0100
++++ libgcc/Makefile.in	2018-07-25 13:15:02.036226940 +0200
+@@ -244,6 +244,7 @@
+ LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(HOST_LIBGCC2_CFLAGS) \
+ 		 $(LIBGCC2_DEBUG_CFLAGS) -DIN_LIBGCC2 \
+ 		 -fbuilding-libgcc -fno-stack-protector \
++		 -Wa,--generate-missing-build-notes=yes \
+ 		 $(INHIBIT_LIBC_CFLAGS)
+ 
+ # Additional options to use when compiling libgcc2.a.
+@@ -297,6 +298,7 @@
+   $(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) \
++  -Wa,--generate-missing-build-notes=yes \
+   $(INHIBIT_LIBC_CFLAGS)
+ 
+ # Extra flags to use when compiling crt{begin,end}.o.
+

diff --git a/gcc9-sparc-config-detection.patch b/gcc9-sparc-config-detection.patch
new file mode 100644
index 0000000..bb06b35
--- /dev/null
+++ b/gcc9-sparc-config-detection.patch
@@ -0,0 +1,40 @@
+--- gcc/config.gcc.jj	2008-04-24 15:42:46.000000000 -0500
++++ gcc/config.gcc	2008-04-24 15:44:51.000000000 -0500
+@@ -2790,7 +2790,7 @@ sparc-*-rtems*)
+ 	tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
+ 	tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems"
+ 	;;
+-sparc-*-linux*)
++sparc-*-linux* | sparcv9-*-linux*)
+ 	tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
+ 	extra_options="${extra_options} sparc/long-double-switch.opt"
+ 	case ${target} in
+@@ -2844,7 +2844,7 @@ sparc64-*-rtems*)
+ 	extra_options="${extra_options}"
+ 	tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
+ 	;;
+-sparc64-*-linux*)
++sparc64*-*-linux*)
+ 	tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/default64.h sparc/linux64.h sparc/tso.h"
+ 	extra_options="${extra_options} sparc/long-double-switch.opt"
+ 	tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
+--- libgcc/config.host.jj	2008-04-24 15:46:19.000000000 -0500
++++ libgcc/config.host	2008-04-24 15:46:49.000000000 -0500
+@@ -1002,7 +1002,7 @@ sparc-*-elf*)
+ 	tmake_file="${tmake_file} t-fdpbit t-crtfm"
+ 	extra_parts="$extra_parts crti.o crtn.o crtfastmath.o"
+ 	;;
+-sparc-*-linux*)		# SPARC's running GNU/Linux, libc6
++sparc-*-linux* | sparcv9-*-linux*)		# SPARC's running GNU/Linux, libc6
+ 	tmake_file="${tmake_file} t-crtfm"
+ 	if test "${host_address}" = 64; then
+ 		tmake_file="$tmake_file sparc/t-linux64"
+@@ -1050,7 +1050,7 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*
+ 	tmake_file="$tmake_file t-crtfm"
+ 	extra_parts="$extra_parts crtfastmath.o"
+ 	;;
+-sparc64-*-linux*)		# 64-bit SPARC's running GNU/Linux
++sparc64*-*-linux*)		# 64-bit SPARC's running GNU/Linux
+ 	extra_parts="$extra_parts crtfastmath.o"
+ 	tmake_file="${tmake_file} t-crtfm sparc/t-linux"
+ 	if test "${host_address}" = 64; then

diff --git a/gcc9-utf-array-test.patch b/gcc9-utf-array-test.patch
new file mode 100644
index 0000000..2e3c18d
--- /dev/null
+++ b/gcc9-utf-array-test.patch
@@ -0,0 +1,32 @@
+2019-01-18  Jakub Jelinek  <jakub@redhat.com>
+
+	* gcc.dg/utf-array.c: Allow wchar_t to be printed as
+	{long ,short ,}{unsigned ,}int.
+
+--- gcc/testsuite/gcc.dg/utf-array.c.jj	2019-01-18 00:33:20.867980701 +0100
++++ gcc/testsuite/gcc.dg/utf-array.c	2019-01-18 23:32:57.086524528 +0100
+@@ -12,13 +12,13 @@ typedef __CHAR32_TYPE__	char32_t;
+ const char	s_0[]	= "ab";
+ const char	s_1[]	= u"ab";	/* { dg-error "from a string literal with type array of" } */
+ const char	s_2[]	= U"ab";	/* { dg-error "from a string literal with type array of" } */
+-const char	s_3[]	= L"ab";	/* { dg-error "from a string literal with type array of .int." } */
++const char	s_3[]	= L"ab";	/* { dg-error "from a string literal with type array of .(long |short )?(unsigned )?int." } */
+ const char	s_4[]	= u8"ab";
+ 
+ const char16_t	s16_0[]	= "ab";		/* { dg-error "from a string literal with type array of .char." } */
+ const char16_t	s16_1[]	= u"ab";
+ const char16_t	s16_2[]	= U"ab";	/* { dg-error "from a string literal with type array of" } */
+-const char16_t	s16_3[]	= L"ab";	/* { dg-error "from a string literal with type array of .int." "" { target { ! wchar_t_char16_t_compatible } } } */
++const char16_t	s16_3[]	= L"ab";	/* { dg-error "from a string literal with type array of .(long |short )?(unsigned )?int." "" { target { ! wchar_t_char16_t_compatible } } } */
+ const char16_t	s16_4[]	= u8"ab";	/* { dg-error "from a string literal with type array of .char." } */
+ 
+ const char16_t	s16_5[0] = u"ab";	/* { dg-warning "chars is too long" } */
+@@ -30,7 +30,7 @@ const char16_t	s16_9[4] = u"ab";
+ const char32_t	s32_0[]	= "ab";		/* { dg-error "from a string literal with type array of .char." } */
+ const char32_t	s32_1[]	= u"ab";	/* { dg-error "from a string literal with type array of" } */
+ const char32_t	s32_2[]	= U"ab";
+-const char32_t	s32_3[]	= L"ab";	/* { dg-error "from a string literal with type array of .int." "" { target { ! wchar_t_char32_t_compatible } } } */
++const char32_t	s32_3[]	= L"ab";	/* { dg-error "from a string literal with type array of .(long |short )?(unsigned )?int." "" { target { ! wchar_t_char32_t_compatible } } } */
+ const char32_t	s32_4[]	= u8"ab";	/* { dg-error "from a string literal with type array of .char." } */
+ 
+ const char32_t	s32_5[0] = U"ab";	/* { dg-warning "chars is too long" } */

diff --git a/sources b/sources
index d019e58..41c6849 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
-SHA512 (gcc-8.2.1-20190109.tar.xz) = d699b52baa2c54a71f2fef2dd77701baa836737975938d67fb532f1a54638b1442fc04b560fd74e66b44195e4de9ce485100b9bdbac569e4c3abad053a96bc33
+SHA512 (gcc-9.0.0-20190119.tar.xz) = 22d58049867a220493ec77da591ebf4a4bc05513451f31a4e9d990035b0a6f571d495fc86ec607bb6eb7aebb310e57ccab669b764d07503ce1e6f6109b893262
 SHA512 (nvptx-newlib-aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24.tar.xz) = 94f7089365296f7dfa485107b4143bebc850a81586f3460fd896bbbb6ba099a00217d4042133424fd2183b352132f4fd367e6a60599bdae2a26dfd48a77d0e04
 SHA512 (nvptx-tools-c28050f60193b3b95a18866a96f03334e874e78f.tar.xz) = a688cb12cf805950a5abbb13b52f45c81dbee98e310b7ed57ae20e76dbfa5964a16270148374a6426d177db71909d28360490f091c86a5d19d4faa5127beeee1

^ permalink raw reply related	[flat|nested] 3+ messages in thread
* [rpms/gcc] rhel-f41-base: 9.0.1-0.3
@ 2026-06-29 12:28 Jakub Jelinek
  0 siblings, 0 replies; 3+ messages in thread
From: Jakub Jelinek @ 2026-06-29 12:28 UTC (permalink / raw)
  To: git-commits

A new commit has been pushed.

Repo   : rpms/gcc
Branch : rhel-f41-base
Commit : 16bcddd9d4ccdfdd482dc4411b1af0a9adefe9cc
Author : Jakub Jelinek <jakub@redhat.com>
Date   : 2019-02-03T11:56:05+01:00
Stats  : +20/-6 in 3 file(s)
URL    : https://src.fedoraproject.org/rpms/gcc/c/16bcddd9d4ccdfdd482dc4411b1af0a9adefe9cc?branch=rhel-f41-base

Log:
9.0.1-0.3

---
diff --git a/.gitignore b/.gitignore
index 65881c6..84695d8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -61,3 +61,4 @@
 /gcc-9.0.0-20190121.tar.xz
 /gcc-9.0.1-20190123.tar.xz
 /gcc-9.0.1-20190129.tar.xz
+/gcc-9.0.1-20190203.tar.xz

diff --git a/gcc.spec b/gcc.spec
index cae4de7..7b2a1ce 100644
--- a/gcc.spec
+++ b/gcc.spec
@@ -1,10 +1,10 @@
-%global DATE 20190129
+%global DATE 20190203
 %global SVNREV 268371
 %global gcc_version 9.0.1
 %global gcc_major 9
 # Note, gcc_release must be integer, if you want to add suffixes to
 # %%{release}, append them after %%{gcc_release} on Release: line.
-%global gcc_release 0.2
+%global gcc_release 0.3
 %global nvptx_tools_gitrev c28050f60193b3b95a18866a96f03334e874e78f
 %global nvptx_newlib_gitrev aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24
 %global _unpackaged_files_terminate_build 0
@@ -101,7 +101,7 @@
 Summary: Various compilers (C, C++, Objective-C, ...)
 Name: gcc
 Version: %{gcc_version}
-Release: %{gcc_release}%{?dist}.1
+Release: %{gcc_release}%{?dist}
 # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have
 # GCC Runtime Exception.
 License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
@@ -2951,8 +2951,21 @@ end
 %endif
 
 %changelog
-* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 9.0.1-0.2.1
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+* Sun Jan  3 2019 Jakub Jelinek <jakub@redhat.com> 9.0.1-0.3
+- update from trunk
+  - PRs c++/80864, c++/86943, c++/87175, c++/88325, c++/88752, c++/88761,
+	c++/88983, c++/88988, c++/89083, c++/89105, c++/89119, c/88956,
+	c/89061, c/89122, fortran/52564, fortran/52884, fortran/57048,
+	fortran/81344, fortran/83246, fortran/88298, fortran/88393,
+	fortran/88669, fortran/88685, fortran/88980, fortran/89084, hsa/87863,
+	libbacktrace/89136, libfortran/78314, libfortran/88678,
+	libstdc++/88170, libstdc++/89117, middle-end/87887, middle-end/88597,
+	middle-end/89137, other/89106, rtl-optimization/87246,
+	rtl-optimization/88593, rtl-optimization/89115, sanitizer/89124,
+	target/89071, testsuite/87451, testsuite/88920, testsuite/89110,
+	tree-optimization/85497, tree-optimization/88107,
+	tree-optimization/88932, tree-optimization/89111,
+	tree-optimization/89135, tree-optimization/89143
 
 * Tue Jan 29 2019 Jakub Jelinek <jakub@redhat.com> 9.0.1-0.2
 - update from trunk

diff --git a/sources b/sources
index 5c8e034..c984ae5 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
-SHA512 (gcc-9.0.1-20190129.tar.xz) = 541c90431c4a30df62ceb3552693a450f6a95bc6244f5e1c13ca3f4eb3b5837e19731f9b2cbe83892c6d4ef37192b3309e8d248940931507040350e8450d98e3
+SHA512 (gcc-9.0.1-20190203.tar.xz) = e82e8f94fde788c57a688db80b7d763cf636621f588bea3ba807118c6fde0177262f72b150f918dcd892fec614400da5fecb15f432ae67cd0333aaca5d6640c9
 SHA512 (nvptx-newlib-aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24.tar.xz) = 94f7089365296f7dfa485107b4143bebc850a81586f3460fd896bbbb6ba099a00217d4042133424fd2183b352132f4fd367e6a60599bdae2a26dfd48a77d0e04
 SHA512 (nvptx-tools-c28050f60193b3b95a18866a96f03334e874e78f.tar.xz) = a688cb12cf805950a5abbb13b52f45c81dbee98e310b7ed57ae20e76dbfa5964a16270148374a6426d177db71909d28360490f091c86a5d19d4faa5127beeee1

^ permalink raw reply related	[flat|nested] 3+ messages in thread
* [rpms/gcc] rhel-f41-base: 9.0.1-0.3
@ 2026-06-29 12:28 Jakub Jelinek
  0 siblings, 0 replies; 3+ messages in thread
From: Jakub Jelinek @ 2026-06-29 12:28 UTC (permalink / raw)
  To: git-commits

A new commit has been pushed.

Repo   : rpms/gcc
Branch : rhel-f41-base
Commit : fe09f8496b3fb8c0c7706c6ee556a03ca6b21d35
Author : Jakub Jelinek <jakub@redhat.com>
Date   : 2019-02-03T11:59:20+01:00
Stats  : +1/-1 in 1 file(s)
URL    : https://src.fedoraproject.org/rpms/gcc/c/fe09f8496b3fb8c0c7706c6ee556a03ca6b21d35?branch=rhel-f41-base

Log:
9.0.1-0.3

---
diff --git a/gcc.spec b/gcc.spec
index 7b2a1ce..99378ca 100644
--- a/gcc.spec
+++ b/gcc.spec
@@ -2951,7 +2951,7 @@ end
 %endif
 
 %changelog
-* Sun Jan  3 2019 Jakub Jelinek <jakub@redhat.com> 9.0.1-0.3
+* Sun Feb  3 2019 Jakub Jelinek <jakub@redhat.com> 9.0.1-0.3
 - update from trunk
   - PRs c++/80864, c++/86943, c++/87175, c++/88325, c++/88752, c++/88761,
 	c++/88983, c++/88988, c++/89083, c++/89105, c++/89119, c/88956,

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-06-29 12:28 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-06-29 12:28 [rpms/gcc] rhel-f41-base: 9.0.1-0.3 Jakub Jelinek
2026-06-29 12:28 Jakub Jelinek
2026-06-29 12:28 Jakub Jelinek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox