[gcc] 5.0.0-0.5

Jakub Jelinek jakub at fedoraproject.org
Sat Jan 24 09:02:55 UTC 2015


commit 7f999936529d6902d43c8cc807ceb3a6843f3072
Author: Jakub Jelinek <jakub at redhat.com>
Date:   Sat Jan 24 10:03:24 2015 +0100

    5.0.0-0.5

 .gitignore                                         |   33 +-
 cloog-0.18.1-ppc64le-config.patch                  |  717 ---------------
 gcc.spec                                           |  922 +++++++-------------
 gcc49-aarch64-unwind-opt.patch                     |  338 -------
 gcc49-cloog-dl.patch                               |  476 ----------
 gcc49-cloog-dl2.patch                              |   74 --
 gcc49-color-auto.patch                             |   46 -
 gcc49-pr38757.patch                                |  106 ---
 gcc49-pr64336.patch                                |   17 -
 gcc49-pr64536.patch                                |   95 --
 ...es.patch => gcc5-aarch64-async-unw-tables.patch |    0
 gcc49-hack.patch => gcc5-hack.patch                |   57 ++
 ...9-i386-libgomp.patch => gcc5-i386-libgomp.patch |    0
 gcc5-isl-dl.patch                                  |  561 ++++++++++++
 ...9-java-nomulti.patch => gcc5-java-nomulti.patch |    0
 gcc49-libgo-p224.patch => gcc5-libgo-p224.patch    |   16 +-
 ...ilib.patch => gcc5-libgomp-omp_h-multilib.patch |    0
 gcc5-libsanitize-aarch64-va42.patch                |   47 +
 ...bstdc++-docs.patch => gcc5-libstdc++-docs.patch |    4 +-
 ...l-no-rpath.patch => gcc5-libtool-no-rpath.patch |    0
 ...no-add-needed.patch => gcc5-no-add-needed.patch |    6 +-
 gcc5-ppc-jit.patch                                 |   22 +
 ...ppc32-retaddr.patch => gcc5-ppc32-retaddr.patch |    0
 gcc5-pr64738.patch                                 |   28 +
 gcc49-rh330771.patch => gcc5-rh330771.patch        |    0
 ...tion.patch => gcc5-sparc-config-detection.patch |    0
 sources                                            |    4 +-
 27 files changed, 1053 insertions(+), 2516 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 3204cee..8da89f4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,32 +1 @@
-/fastjar-0.97.tar.gz
-/cloog-0.18.1.tar.gz
-/gcc-4.9.0-20140409.tar.bz2
-/isl-0.12.2.tar.bz2
-/gcc-4.9.0-20140411.tar.bz2
-/gcc-4.9.0-20140422.tar.bz2
-/gcc-4.9.0-20140505.tar.bz2
-/gcc-4.9.0-20140506.tar.bz2
-/gcc-4.9.0-20140514.tar.bz2
-/gcc-4.9.0-20140518.tar.bz2
-/gcc-4.9.0-20140529.tar.bz2
-/gcc-4.9.0-20140604.tar.bz2
-/gcc-4.9.0-20140612.tar.bz2
-/gcc-4.9.0-20140617.tar.bz2
-/gcc-4.9.0-20140619.tar.bz2
-/gcc-4.9.0-20140625.tar.bz2
-/gcc-4.9.0-20140702.tar.bz2
-/gcc-4.9.1-20140716.tar.bz2
-/gcc-4.9.1-20140717.tar.bz2
-/gcc-4.9.1-20140801.tar.bz2
-/gcc-4.9.1-20140807.tar.bz2
-/gcc-4.9.1-20140813.tar.bz2
-/gcc-4.9.1-20140815.tar.bz2
-/gcc-4.9.1-20140912.tar.bz2
-/gcc-4.9.1-20140922.tar.bz2
-/gcc-4.9.1-20140930.tar.bz2
-/gcc-4.9.1-20141017.tar.bz2
-/gcc-4.9.1-20141024.tar.bz2
-/gcc-4.9.2-20141101.tar.bz2
-/gcc-4.9.2-20141212.tar.bz2
-/gcc-4.9.2-20141217.tar.bz2
-/gcc-4.9.2-20150107.tar.bz2
+/gcc-5.0.0-20150123.tar.bz2
diff --git a/gcc.spec b/gcc.spec
index f9a7108..a43a6e9 100644
--- a/gcc.spec
+++ b/gcc.spec
@@ -1,9 +1,9 @@
-%global DATE 20150107
-%global SVNREV 219315
-%global gcc_version 4.9.2
+%global DATE 20150123
+%global SVNREV 220063
+%global gcc_version 5.0.0
 # 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 5
+%global gcc_release 0.5
 %global _unpackaged_files_terminate_build 0
 %global _performance_build 1
 %global multilib_64_archs sparc64 ppc64 ppc64p7 s390x x86_64
@@ -22,7 +22,7 @@
 %else
 %global build_libquadmath 0
 %endif
-%ifarch %{ix86} x86_64 ppc ppc64 ppc64p7 %{arm}
+%ifarch %{ix86} x86_64 ppc ppc64 ppc64p7 %{arm} aarch64
 %global build_libasan 1
 %else
 %global build_libasan 0
@@ -37,7 +37,7 @@
 %else
 %global build_liblsan 0
 %endif
-%ifarch %{ix86} x86_64 ppc ppc64 ppc64p7 %{arm}
+%ifarch %{ix86} x86_64 ppc ppc64 ppc64p7 %{arm} aarch64
 %global build_libubsan 1
 %else
 %global build_libubsan 0
@@ -57,7 +57,7 @@
 %else
 %global build_libitm 0
 %endif
-%global build_cloog 1
+%global build_isl 1
 %global build_libstdcxx_docs 1
 %ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64
 %global attr_ifunc 1
@@ -86,13 +86,10 @@ 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-4_9-branch@%{SVNREV} gcc-%{version}-%{DATE}
+# svn export svn://gcc.gnu.org/svn/gcc/branches/redhat/gcc-5-branch@%{SVNREV} gcc-%{version}-%{DATE}
 # tar cf - gcc-%{version}-%{DATE} | bzip2 -9 > gcc-%{version}-%{DATE}.tar.bz2
 Source0: gcc-%{version}-%{DATE}.tar.bz2
-%global isl_version 0.12.2
-Source1: ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-%{isl_version}.tar.bz2
-%global cloog_version 0.18.1
-Source2: ftp://gcc.gnu.org/pub/gcc/infrastructure/cloog-%{cloog_version}.tar.gz
+%global isl_version 0.14
 URL: http://gcc.gnu.org
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 # Need binutils with -pie support >= 2.14.90.0.4-4
@@ -139,6 +136,11 @@ BuildRequires: gcc-gnat >= 3.1, libgnat >= 3.1
 %ifarch ia64
 BuildRequires: libunwind >= 0.98
 %endif
+%if %{build_isl}
+BuildRequires: isl = %{isl_version}
+BuildRequires: isl-devel = %{isl_version}
+Requires: isl = %{isl_version}
+%endif
 %if %{build_libstdcxx_docs}
 BuildRequires: doxygen >= 1.7.1
 BuildRequires: graphviz, dblatex, texlive-collection-latex, docbook5-style-xsl
@@ -182,27 +184,22 @@ Requires(preun): /sbin/install-info
 AutoReq: true
 Provides: bundled(libiberty)
 
-Patch0: gcc49-hack.patch
-Patch1: gcc49-java-nomulti.patch
-Patch2: gcc49-ppc32-retaddr.patch
-Patch3: gcc49-rh330771.patch
-Patch4: gcc49-i386-libgomp.patch
-Patch5: gcc49-sparc-config-detection.patch
-Patch6: gcc49-libgomp-omp_h-multilib.patch
-Patch7: gcc49-libtool-no-rpath.patch
-Patch8: gcc49-cloog-dl.patch
-Patch9: gcc49-cloog-dl2.patch
-Patch10: gcc49-pr38757.patch
-Patch11: gcc49-libstdc++-docs.patch
-Patch12: gcc49-no-add-needed.patch
-Patch13: gcc49-color-auto.patch
-Patch14: gcc49-libgo-p224.patch
-Patch15: gcc49-aarch64-async-unw-tables.patch
-Patch16: gcc49-aarch64-unwind-opt.patch
-Patch17: gcc49-pr64336.patch
-Patch18: gcc49-pr64536.patch
-
-Patch1100: cloog-%{cloog_version}-ppc64le-config.patch
+Patch0: gcc5-hack.patch
+Patch1: gcc5-java-nomulti.patch
+Patch2: gcc5-ppc32-retaddr.patch
+Patch3: gcc5-rh330771.patch
+Patch4: gcc5-i386-libgomp.patch
+Patch5: gcc5-sparc-config-detection.patch
+Patch6: gcc5-libgomp-omp_h-multilib.patch
+Patch7: gcc5-libtool-no-rpath.patch
+Patch8: gcc5-isl-dl.patch
+Patch10: gcc5-libstdc++-docs.patch
+Patch11: gcc5-no-add-needed.patch
+Patch12: gcc5-libgo-p224.patch
+Patch13: gcc5-aarch64-async-unw-tables.patch
+Patch14: gcc5-libsanitize-aarch64-va42.patch
+Patch15: gcc5-ppc-jit.patch
+Patch16: gcc5-pr64738.patch
 
 # On ARM EABI systems, we do want -gnueabi to be part of the
 # target triple.
@@ -220,11 +217,11 @@ Patch1100: cloog-%{cloog_version}-ppc64le-config.patch
 %endif
 
 %description
-The gcc package contains the GNU Compiler Collection version 4.9.
+The gcc package contains the GNU Compiler Collection version 5.
 You'll need this package in order to compile C code.
 
 %package -n libgcc
-Summary: GCC version 4.9 shared support library
+Summary: GCC version 5 shared support library
 Group: System Environment/Libraries
 Autoreq: false
 %if !%{build_ada}
@@ -375,6 +372,33 @@ Requires(preun): /sbin/install-info
 This package contains GCC shared support library which is needed
 for OpenMP v3.0 support.
 
+%package gdb-plugin
+Summary: GCC plugin for GDB
+Group: Development/Debuggers
+Requires: gcc = %{version}-%{release}
+
+%description gdb-plugin
+This package contains GCC plugin for GDB C expression evaluation.
+
+%package -n libgccjit
+Summary: Library for embedding GCC inside programs and libraries
+Group: System Environment/Libraries
+Requires: gcc = %{version}-%{release}
+
+%description -n libgccjit
+This package contains shared library with GCC JIT front-end.
+
+%package -n libgccjit-devel
+Summary: Support for embedding GCC inside programs and libraries
+Group: Development/Libraries
+BuildRequires: python-sphinx
+Requires: libgccjit = %{version}-%{release}
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
+
+%description -n libgccjit-devel
+This package contains header files and documentation for GCC JIT front-end.
+
 %package -n libquadmath
 Summary: GCC __float128 shared support library
 Group: System Environment/Libraries
@@ -620,6 +644,8 @@ Requires: libgo = %{version}-%{release}
 Requires: libgo-devel = %{version}-%{release}
 Requires(post): /sbin/install-info
 Requires(preun): /sbin/install-info
+Requires(post): %{_sbindir}/update-alternatives
+Requires(postun): %{_sbindir}/update-alternatives
 Autoreq: true
 
 %description go
@@ -669,7 +695,7 @@ not stable, so plugins must be rebuilt any time GCC is updated.
 %define debug_package %{nil}
 %global __debug_package 1
 %global __debug_install_post \
-   %{_rpmconfigdir}/find-debuginfo.sh %{?_missing_build_ids_terminate_build:--strict-build-id} %{?_find_debuginfo_opts} "%{_builddir}/gcc-%{version}-%{DATE}"\
+   PATH=%{_builddir}/gcc-%{version}-%{DATE}/dwz-wrapper/:$PATH %{_rpmconfigdir}/find-debuginfo.sh %{?_missing_build_ids_terminate_build:--strict-build-id} %{?_find_debuginfo_dwz_opts} %{?_find_debuginfo_opts} "%{_builddir}/gcc-%{version}-%{DATE}"\
     %{_builddir}/gcc-%{version}-%{DATE}/split-debuginfo.sh\
 %{nil}
 
@@ -703,7 +729,7 @@ package or when debugging this package.
 %endif
 
 %prep
-%setup -q -n gcc-%{version}-%{DATE} -a 1 -a 2
+%setup -q -n gcc-%{version}-%{DATE}
 %patch0 -p0 -b .hack~
 %patch1 -p0 -b .java-nomulti~
 %patch2 -p0 -b .ppc32-retaddr~
@@ -712,26 +738,53 @@ package or when debugging this package.
 %patch5 -p0 -b .sparc-config-detection~
 %patch6 -p0 -b .libgomp-omp_h-multilib~
 %patch7 -p0 -b .libtool-no-rpath~
-%if %{build_cloog}
-%patch8 -p0 -b .cloog-dl~
-%patch9 -p0 -b .cloog-dl2~
+%if %{build_isl}
+%patch8 -p0 -b .isl-dl~
 %endif
-%patch10 -p0 -b .pr38757~
 %if %{build_libstdcxx_docs}
-%patch11 -p0 -b .libstdc++-docs~
-%endif
-%patch12 -p0 -b .no-add-needed~
-%if 0%{?fedora} >= 20 || 0%{?rhel} >= 7
-%patch13 -p0 -b .color-auto~
+%patch10 -p0 -b .libstdc++-docs~
 %endif
-%patch14 -p0 -b .libgo-p224~
+%patch11 -p0 -b .no-add-needed~
+%patch12 -p0 -b .libgo-p224~
 rm -f libgo/go/crypto/elliptic/p224{,_test}.go
-%patch15 -p0 -b .aarch64-async-unw-tables~
-%patch16 -p0 -b .aarch64-unwind-opt~
-%patch17 -p0 -b .pr64336~
-%patch18 -p0 -b .pr64536~
+%patch13 -p0 -b .aarch64-async-unw-tables~
+%patch14 -p0 -b .libsanitize-aarch64-va42~
+%patch15 -p0 -b .ppc-jit~
+%patch16 -p0 -b .pr64738~
 
 %if 0%{?_enable_debug_packages}
+mkdir dwz-wrapper
+if [ -f /usr/bin/dwz ]; then
+cat > dwz-wrapper/dwz <<\EOF
+#!/bin/bash
+dwz_opts=
+dwzm_opts=
+dwz_files=
+dwzm_files=
+while [ $# -gt 0 ]; do
+  case "$1" in
+  -l|-L)
+    dwz_opts="$dwz_opts $1 $2"; shift;;
+  -m|-M)
+    dwzm_opts="$dwzm_opts $1 $2"; shift;;
+  -*)
+    dwz_opts="$dwz_opts $1";;
+  *)
+    if [[ "$1" =~ (lib[0-9]*/lib(gcc[_.]|gomp|stdc|quadmath|itm|go\.so)|bin/gofmt.gcc.debug|bin/go.gcc.debug|/cgo.debug) ]]; then
+      dwz_files="$dwz_files $1"
+    else
+      dwzm_files="$dwzm_files $1"
+    fi;;
+  esac
+  shift
+done
+if [ -f /usr/bin/dwz ]; then
+  /usr/bin/dwz $dwz_opts $dwz_files
+  /usr/bin/dwz $dwz_opts $dwzm_opts $dwzm_files
+fi
+EOF
+chmod 755 dwz-wrapper/dwz
+fi
 cat > split-debuginfo.sh <<\EOF
 #!/bin/sh
 BUILDDIR="%{_builddir}/gcc-%{version}-%{DATE}"
@@ -741,7 +794,7 @@ if [ -f "${BUILDDIR}"/debugfiles.list \
   > "${BUILDDIR}"/debugfiles-base.list
   cd "${RPM_BUILD_ROOT}"
   for f in `find usr/lib/debug -name \*.debug \
-	    | egrep 'lib[0-9]*/lib(gcc|gomp|stdc|quadmath|itm)'`; do
+	    | egrep 'lib[0-9]*/lib(gcc[_.]|gomp|stdc|quadmath|itm)'`; do
     echo "/$f" >> "${BUILDDIR}"/debugfiles-base.list
     if [ -f "$f" -a ! -L "$f" ]; then
       cp -a "$f" "${BUILDDIR}"/test.debug
@@ -752,10 +805,32 @@ if [ -f "${BUILDDIR}"/debugfiles.list \
     fi
   done
   for f in `find usr/lib/debug/.build-id -type l`; do
-    ls -l "$f" | egrep -q -- '->.*lib[0-9]*/lib(gcc|gomp|stdc|quadmath|itm)' \
+    ls -l "$f" | egrep -q -- '->.*lib[0-9]*/lib(gcc[_.]|gomp|stdc|quadmath|itm)' \
       && echo "/$f" >> "${BUILDDIR}"/debugfiles-base.list
   done
-  grep -v -f "${BUILDDIR}"/debugfiles-base.list \
+  cp -a "${BUILDDIR}"/debugfiles-base.list "${BUILDDIR}"/debugfiles-remove.list
+%if %{build_go}
+  libgoso=`basename .%{_prefix}/%{_lib}/libgo.so.7.*`
+  for f in %{_prefix}/bin/go.gcc \
+	   %{_prefix}/bin/gofmt.gcc \
+	   %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cgo \
+	   %{_prefix}/%{_lib}/$libgoso ; do
+    eu-unstrip .$f usr/lib/debug$f.debug -o .$f.new
+    chmod --reference=.$f .$f.new
+    mv -f .$f.new .$f
+    rm -f usr/lib/debug$f.debug
+    echo "/usr/lib/debug$f.debug" >> "${BUILDDIR}"/debugfiles-remove.list
+  done
+  rm -f usr/lib/debug%{_prefix}/%{_lib}/libgo.so.7.debug
+  echo "/usr/lib/debug%{_prefix}/%{_lib}/libgo.so.7.debug" >> "${BUILDDIR}"/debugfiles-remove.list
+  for f in `find usr/lib/debug/.build-id -type l`; do
+    if ls -l "$f" | egrep -q -- '->.*(/bin/go.gcc|/bin/gofmt.gcc|/cgo|lib[0-9]*/libgo\.so)'; then
+      echo "/$f" >> "${BUILDDIR}"/debugfiles-remove.list
+      rm -f "$f"
+    fi
+  done
+%endif
+  grep -v -f "${BUILDDIR}"/debugfiles-remove.list \
     "${BUILDDIR}"/debugfiles.list > "${BUILDDIR}"/debugfiles.list.new
   mv -f "${BUILDDIR}"/debugfiles.list.new "${BUILDDIR}"/debugfiles.list
   for f in `LC_ALL=C sort -z -u "${BUILDDIR}"/debugsources-base.list \
@@ -778,40 +853,16 @@ EOF
 chmod 755 split-debuginfo.sh
 %endif
 
-%patch1100 -p0 -b .cloog-ppc64le-config~
-
-sed -i -e 's/4\.9\.3/4.9.2/' gcc/BASE-VER
 echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE
 
-%if 0%{?fedora} >= 16 || 0%{?rhel} >= 7
-# Default to -gdwarf-4 -fno-debug-types-section rather than -gdwarf-2
-sed -i '/UInteger Var(dwarf_version)/s/Init(2)/Init(4)/' gcc/common.opt
-sed -i '/flag_debug_types_section/s/Init(1)/Init(0)/' gcc/common.opt
-sed -i '/dwarf_record_gcc_switches/s/Init(0)/Init(1)/' gcc/common.opt
-sed -i 's/\(may be either 2, 3 or 4; the default version is \)2\./\14./' gcc/doc/invoke.texi
-%else
-# Default to -gdwarf-3 rather than -gdwarf-2
-sed -i '/UInteger Var(dwarf_version)/s/Init(2)/Init(3)/' gcc/common.opt
-sed -i 's/\(may be either 2, 3 or 4; the default version is \)2\./\13./' gcc/doc/invoke.texi
-sed -i 's/#define[[:blank:]]*EMIT_ENTRY_VALUE[[:blank:]].*$/#define EMIT_ENTRY_VALUE 0/' gcc/{var-tracking,dwarf2out}.c
-sed -i 's/#define[[:blank:]]*EMIT_TYPED_DWARF_STACK[[:blank:]].*$/#define EMIT_TYPED_DWARF_STACK 0/' gcc/dwarf2out.c
-sed -i 's/#define[[:blank:]]*EMIT_DEBUG_MACRO[[:blank:]].*$/#define EMIT_DEBUG_MACRO 0/' gcc/dwarf2out.c
-%endif
-
 cp -a libstdc++-v3/config/cpu/i{4,3}86/atomicity.h
 
-# Hack to avoid building multilib libjava
-perl -pi -e 's/^all: all-redirect/ifeq (\$(MULTISUBDIR),)\nall: all-redirect\nelse\nall:\n\techo Multilib libjava build disabled\nendif/' libjava/Makefile.in
-perl -pi -e 's/^install: install-redirect/ifeq (\$(MULTISUBDIR),)\ninstall: install-redirect\nelse\ninstall:\n\techo Multilib libjava install disabled\nendif/' libjava/Makefile.in
-perl -pi -e 's/^check: check-redirect/ifeq (\$(MULTISUBDIR),)\ncheck: check-redirect\nelse\ncheck:\n\techo Multilib libjava check disabled\nendif/' libjava/Makefile.in
-perl -pi -e 's/^all: all-recursive/ifeq (\$(MULTISUBDIR),)\nall: all-recursive\nelse\nall:\n\techo Multilib libjava build disabled\nendif/' libjava/Makefile.in
-perl -pi -e 's/^install: install-recursive/ifeq (\$(MULTISUBDIR),)\ninstall: install-recursive\nelse\ninstall:\n\techo Multilib libjava install disabled\nendif/' libjava/Makefile.in
-perl -pi -e 's/^check: check-recursive/ifeq (\$(MULTISUBDIR),)\ncheck: check-recursive\nelse\ncheck:\n\techo Multilib libjava check disabled\nendif/' libjava/Makefile.in
-
 ./contrib/gcc_update --touch
 
 LC_ALL=C sed -i -e 's/\xa0/ /' gcc/doc/options.texi
 
+sed -i -e 's/Common Driver Var(flag_report_bug)/& Init(1)/' gcc/common.opt
+
 %ifarch ppc
 if [ -d libstdc++-v3/config/abi/post/powerpc64-linux-gnu ]; then
   mkdir -p libstdc++-v3/config/abi/post/powerpc64-linux-gnu/64
@@ -841,49 +892,8 @@ rm -fr obj-%{gcc_target_platform}
 mkdir obj-%{gcc_target_platform}
 cd obj-%{gcc_target_platform}
 
-%if %{build_cloog}
-mkdir isl-build isl-install
-%ifarch s390 s390x
-ISL_FLAG_PIC=-fPIC
-%else
-ISL_FLAG_PIC=-fpic
-%endif
-cd isl-build
-../../isl-%{isl_version}/configure --disable-shared \
-  CC=/usr/bin/gcc CXX=/usr/bin/g++ \
-  CFLAGS="${CFLAGS:-%optflags} $ISL_FLAG_PIC" --prefix=`cd ..; pwd`/isl-install
-make %{?_smp_mflags}
-make install
-cd ..
-
-mkdir cloog-build cloog-install
-cd cloog-build
-cat >> ../../cloog-%{cloog_version}/source/isl/constraints.c << \EOF
-#include <isl/flow.h>
-static void __attribute__((used)) *s1 = (void *) isl_union_map_compute_flow;
-static void __attribute__((used)) *s2 = (void *) isl_map_dump;
-EOF
-sed -i 's|libcloog|libgcc49privatecloog|g' \
-  ../../cloog-%{cloog_version}/{,test/}Makefile.{am,in}
-isl_prefix=`cd ../isl-install; pwd` \
-../../cloog-%{cloog_version}/configure --with-isl=system \
-  --with-isl-prefix=`cd ../isl-install; pwd` \
-  CC=/usr/bin/gcc CXX=/usr/bin/g++ \
-  CFLAGS="${CFLAGS:-%optflags}" CXXFLAGS="${CXXFLAGS:-%optflags}" \
-   --prefix=`cd ..; pwd`/cloog-install
-sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
-sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
-make %{?_smp_mflags}
-make %{?_smp_mflags} install
-cd ../cloog-install/lib
-rm libgcc49privatecloog-isl.so{,.4}
-mv libgcc49privatecloog-isl.so.4.0.0 libcloog-isl.so.4
-ln -sf libcloog-isl.so.4 libcloog-isl.so
-ln -sf libcloog-isl.so.4 libcloog.so
-cd ../..
-%endif
-
 CC=gcc
+CXX=g++
 OPT_FLAGS=`echo %{optflags}|sed -e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=[12]//g'`
 OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-m64//g;s/-m32//g;s/-m31//g'`
 OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-mfpmath=sse/-mfpmath=sse -msse2/g'`
@@ -894,24 +904,6 @@ OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-mcpu=ultrasparc/-mtune=ultrasparc/g;s/-mcp
 %ifarch %{ix86}
 OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-march=i.86//g'`
 %endif
-%ifarch sparc64
-cat > gcc64 <<"EOF"
-#!/bin/sh
-exec /usr/bin/gcc -m64 "$@"
-EOF
-chmod +x gcc64
-CC=`pwd`/gcc64
-%endif
-%ifarch ppc64 ppc64le ppc64p7
-if gcc -m64 -xc -S /dev/null -o - > /dev/null 2>&1; then
-  cat > gcc64 <<"EOF"
-#!/bin/sh
-exec /usr/bin/gcc -m64 "$@"
-EOF
-  chmod +x gcc64
-  CC=`pwd`/gcc64
-fi
-%endif
 OPT_FLAGS=`echo "$OPT_FLAGS" | sed -e 's/[[:blank:]]\+/ /g'`
 case "$OPT_FLAGS" in
   *-fasynchronous-unwind-tables*)
@@ -927,12 +919,9 @@ enablelada=,ada
 %if %{build_go}
 enablelgo=,go
 %endif
-CC="$CC" CFLAGS="$OPT_FLAGS" \
-	CXXFLAGS="`echo " $OPT_FLAGS " | sed 's/ -Wall / /g;s/ -fexceptions / /g' \
-		  | sed 's/ -Werror=format-security / -Wformat -Werror=format-security /'`" \
-	XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" GCJFLAGS="$OPT_FLAGS" \
-	../configure --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
-	--with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap \
+CONFIGURE_OPTS="\
+	--prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
+	--with-bugurl=http://bugzilla.redhat.com/bugzilla \
 	--enable-shared --enable-threads=posix --enable-checking=release \
 %ifarch ppc64le
 	--disable-multilib \
@@ -941,13 +930,15 @@ CC="$CC" CFLAGS="$OPT_FLAGS" \
 %endif
 	--with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions \
 	--enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu \
-	--enable-languages=c,c++,objc,obj-c++,fortran${enablelada}${enablelgo},lto \
 	--enable-plugin --enable-initfini-array \
 	--disable-libgcj \
-%if %{build_cloog}
-	--with-isl=`pwd`/isl-install --with-cloog=`pwd`/cloog-install \
+%if 0%{fedora} >= 21 && 0%{fedora} <= 22
+	--with-default-libstdcxx-abi=c++98 \
+%endif
+%if %{build_isl}
+	--with-isl \
 %else
-	--without-isl --without-cloog \
+	--without-isl \
 %endif
 %if 0%{?fedora} >= 21 || 0%{?rhel} >= 7
 %if %{attr_ifunc}
@@ -972,7 +963,7 @@ CC="$CC" CFLAGS="$OPT_FLAGS" \
 %ifarch sparc sparcv9
 	--host=%{gcc_target_platform} --build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=v7
 %endif
-%ifarch ppc ppc64 ppc64le ppc64p7
+%ifarch ppc ppc64 ppc64p7
 %if 0%{?rhel} >= 7
 	--with-cpu-32=power7 --with-tune-32=power7 --with-cpu-64=power7 --with-tune-64=power7 \
 %endif
@@ -980,6 +971,14 @@ CC="$CC" CFLAGS="$OPT_FLAGS" \
 	--with-cpu-32=power4 --with-tune-32=power6 --with-cpu-64=power4 --with-tune-64=power6 \
 %endif
 %endif
+%ifarch ppc64le
+%if 0%{?rhel} >= 7
+	--with-cpu-32=power8 --with-tune-32=power8 --with-cpu-64=power8 --with-tune-64=power8 \
+%endif
+%if 0%{?fedora} > 21 && 0%{?fedora} < 24
+	--with-cpu-32=power7 --with-tune-32=power8 --with-cpu-64=power7 --with-tune-64=power8 \
+%endif
+%endif
 %ifarch ppc
 	--build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=default32
 %endif
@@ -1009,22 +1008,52 @@ CC="$CC" CFLAGS="$OPT_FLAGS" \
 %endif
 %endif
 %ifarch armv7hl
-	--with-cpu=cortex-a8 --with-tune=cortex-a8 --with-arch=armv7-a \
+	--with-tune=cortex-a8 --with-arch=armv7-a \
 	--with-float=hard --with-fpu=vfpv3-d16 --with-abi=aapcs-linux \
 %endif
 %ifnarch sparc sparcv9 ppc
-	--build=%{gcc_target_platform}
+	--build=%{gcc_target_platform} \
 %endif
+	"
+
+CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \
+	CXXFLAGS="`echo " $OPT_FLAGS " | sed 's/ -Wall / /g;s/ -fexceptions / /g' \
+		  | sed 's/ -Werror=format-security / -Wformat -Werror=format-security /'`" \
+	XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \
+	../configure --enable-bootstrap \
+	--enable-languages=c,c++,objc,obj-c++,fortran${enablelada}${enablelgo},lto \
+	$CONFIGURE_OPTS
 
-%ifarch %{arm} sparc sparcv9 sparc64
-GCJFLAGS="$OPT_FLAGS" make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" bootstrap
+%ifarch sparc sparcv9 sparc64 aarch64
+make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" bootstrap
 %else
-GCJFLAGS="$OPT_FLAGS" make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" profiledbootstrap
+make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" profiledbootstrap
 %endif
 
-%if %{build_cloog}
-cp -a cloog-install/lib/libcloog-isl.so.4 gcc/
-%endif
+CC="`%{gcc_target_platform}/libstdc++-v3/scripts/testsuite_flags --build-cc`"
+CXX="`%{gcc_target_platform}/libstdc++-v3/scripts/testsuite_flags --build-cxx` `%{gcc_target_platform}/libstdc++-v3/scripts/testsuite_flags --build-includes`"
+
+# Build libgccjit separately, so that normal compiler binaries aren't -fpic
+# unnecessarily.
+mkdir objlibgccjit
+cd objlibgccjit
+CC="$CC" CXX="$CXX" CFLAGS="`echo $OPT_FLAGS | sed 's/-Werror=format-security//'`" \
+	CXXFLAGS="`echo " $OPT_FLAGS " | sed 's/ -Wall / /g;s/ -fexceptions / /g' \
+		  | sed 's/-Werror=format-security//'`" \
+	XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \
+	../../configure --disable-bootstrap --enable-host-shared \
+	--enable-languages=jit $CONFIGURE_OPTS
+make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" all-gcc
+cp -a gcc/libgccjit.so* ../gcc/
+cd ../gcc/
+ln -sf xgcc %{gcc_target_platform}-gcc-%{version}
+cp -a Makefile{,.orig}
+sed -i -e '/^CHECK_TARGETS/s/$/ check-jit/' Makefile
+touch -r Makefile.orig Makefile
+rm Makefile.orig
+make jit.sphinx.html
+make jit.sphinx.install-html jit_htmldir=`pwd`/../../rpm.doc/libgccjit-devel/html
+cd ..
 
 # Make generated man pages even if Pod::Man is not new enough
 perl -pi -e 's/head3/head2/' ../contrib/texi2pod.pl
@@ -1046,9 +1075,9 @@ cd ../..
 cd ..
 mkdir -p rpm.doc/gfortran rpm.doc/objc
 mkdir -p rpm.doc/go rpm.doc/libgo rpm.doc/libquadmath rpm.doc/libitm
-mkdir -p rpm.doc/changelogs/{gcc/cp,gcc/java,gcc/ada,libstdc++-v3,libobjc,libgomp,libatomic,libsanitizer,libcilkrts}
+mkdir -p rpm.doc/changelogs/{gcc/cp,gcc/java,gcc/ada,gcc/jit,libstdc++-v3,libobjc,libgomp,libcc1,libatomic,libsanitizer,libcilkrts}
 
-for i in {gcc,gcc/cp,gcc/java,gcc/ada,libstdc++-v3,libobjc,libgomp,libatomic,libsanitizer,libcilkrts}/ChangeLog*; do
+for i in {gcc,gcc/cp,gcc/java,gcc/ada,gcc/jit,libstdc++-v3,libobjc,libgomp,libcc1,libatomic,libsanitizer,libcilkrts}/ChangeLog*; do
 	cp -p $i rpm.doc/changelogs/$i
 done
 
@@ -1102,10 +1131,6 @@ chmod 644 %{buildroot}%{_infodir}/gnat*
 FULLPATH=%{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
 FULLEPATH=%{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
 
-%if %{build_cloog}
-cp -a cloog-install/lib/libcloog-isl.so.4 $FULLPATH/
-%endif
-
 # fix some things
 ln -sf gcc %{buildroot}%{_prefix}/bin/cc
 rm -f %{buildroot}%{_prefix}/lib/cpp
@@ -1115,6 +1140,13 @@ rm -f %{buildroot}%{_infodir}/dir
 gzip -9 %{buildroot}%{_infodir}/*.info*
 ln -sf gcc %{buildroot}%{_prefix}/bin/gnatgcc
 
+%if %{build_go}
+mv %{buildroot}%{_prefix}/bin/go{,.gcc}
+mv %{buildroot}%{_prefix}/bin/gofmt{,.gcc}
+ln -sf /etc/alternatives/go %{buildroot}%{_prefix}/bin/go
+ln -sf /etc/alternatives/gofmt %{buildroot}%{_prefix}/bin/gofmt
+%endif
+
 cxxconfig="`find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h`"
 for i in `find %{gcc_target_platform}/[36]*/libstdc++-v3/include -name c++config.h 2>/dev/null`; do
   if ! diff -up $cxxconfig $i; then
@@ -1265,6 +1297,12 @@ done
 touch -r hook.in %{buildroot}%{_datadir}/gdb/auto-load/%{_prefix}/%{_lib}/libstdc++*gdb.py
 popd
 
+rm -f $FULLEPATH/libgccjit.so
+cp -a objlibgccjit/gcc/libgccjit.so* %{buildroot}%{_prefix}/%{_lib}/
+cp -a ../gcc/jit/libgccjit*.h %{buildroot}%{_prefix}/include/
+/usr/bin/install -c -m 644 objlibgccjit/gcc/doc/libgccjit.info %{buildroot}/%{_infodir}/
+gzip -9 %{buildroot}/%{_infodir}/libgccjit.info
+
 pushd $FULLPATH
 if [ "%{_lib}" = "lib" ]; then
 ln -sf ../../../libobjc.so.4 libobjc.so
@@ -1272,7 +1310,7 @@ ln -sf ../../../libstdc++.so.6.*[0-9] libstdc++.so
 ln -sf ../../../libgfortran.so.3.* libgfortran.so
 ln -sf ../../../libgomp.so.1.* libgomp.so
 %if %{build_go}
-ln -sf ../../../libgo.so.5.* libgo.so
+ln -sf ../../../libgo.so.7.* libgo.so
 %endif
 %if %{build_libquadmath}
 ln -sf ../../../libquadmath.so.0.* libquadmath.so
@@ -1284,7 +1322,7 @@ ln -sf ../../../libitm.so.1.* libitm.so
 ln -sf ../../../libatomic.so.1.* libatomic.so
 %endif
 %if %{build_libasan}
-ln -sf ../../../libasan.so.1.* libasan.so
+ln -sf ../../../libasan.so.2.* libasan.so
 mv ../../../libasan_preinit.o libasan_preinit.o
 %endif
 %if %{build_libubsan}
@@ -1299,7 +1337,7 @@ ln -sf ../../../../%{_lib}/libstdc++.so.6.*[0-9] libstdc++.so
 ln -sf ../../../../%{_lib}/libgfortran.so.3.* libgfortran.so
 ln -sf ../../../../%{_lib}/libgomp.so.1.* libgomp.so
 %if %{build_go}
-ln -sf ../../../../%{_lib}/libgo.so.5.* libgo.so
+ln -sf ../../../../%{_lib}/libgo.so.7.* libgo.so
 %endif
 %if %{build_libquadmath}
 ln -sf ../../../../%{_lib}/libquadmath.so.0.* libquadmath.so
@@ -1311,7 +1349,7 @@ ln -sf ../../../../%{_lib}/libitm.so.1.* libitm.so
 ln -sf ../../../../%{_lib}/libatomic.so.1.* libatomic.so
 %endif
 %if %{build_libasan}
-ln -sf ../../../../%{_lib}/libasan.so.1.* libasan.so
+ln -sf ../../../../%{_lib}/libasan.so.2.* libasan.so
 mv ../../../../%{_lib}/libasan_preinit.o libasan_preinit.o
 %endif
 %if %{build_libubsan}
@@ -1375,28 +1413,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-4.9.so
+ln -sf ../../../../../libgnarl-*.so libgnarl-5.so
 ln -sf ../../../../../libgnat-*.so libgnat.so
-ln -sf ../../../../../libgnat-*.so libgnat-4.9.so
+ln -sf ../../../../../libgnat-*.so libgnat-5.so
 else
 ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl.so
-ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl-4.9.so
+ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl-5.so
 ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat.so
-ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat-4.9.so
+ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat-5.so
 fi
 popd
 else
 pushd $FULLPATH/adalib
 if [ "%{_lib}" = "lib" ]; then
 ln -sf ../../../../libgnarl-*.so libgnarl.so
-ln -sf ../../../../libgnarl-*.so libgnarl-4.9.so
+ln -sf ../../../../libgnarl-*.so libgnarl-5.so
 ln -sf ../../../../libgnat-*.so libgnat.so
-ln -sf ../../../../libgnat-*.so libgnat-4.9.so
+ln -sf ../../../../libgnat-*.so libgnat-5.so
 else
 ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl.so
-ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl-4.9.so
+ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl-5.so
 ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat.so
-ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat-4.9.so
+ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat-5.so
 fi
 popd
 fi
@@ -1409,8 +1447,8 @@ ln -sf ../`echo ../../../../lib/libgfortran.so.3.* | 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.5.* | sed 's,^.*libg,libg,'`' )' > libgo.so
-echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.5.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.7.* | sed 's,^.*libg,libg,'`' )' > libgo.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.7.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so
 %endif
 %if %{build_libquadmath}
 rm -f libquadmath.so
@@ -1429,8 +1467,8 @@ echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libatomic.so.1.* | sed 's,
 %endif
 %if %{build_libasan}
 rm -f libasan.so
-echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libasan.so.1.* | sed 's,^.*liba,liba,'`' )' > libasan.so
-echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libasan.so.1.* | sed 's,^.*liba,liba,'`' )' > 64/libasan.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libasan.so.2.* | sed 's,^.*liba,liba,'`' )' > libasan.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libasan.so.2.* | sed 's,^.*liba,liba,'`' )' > 64/libasan.so
 mv ../../../../lib64/libasan_preinit.o 64/libasan_preinit.o
 %endif
 %if %{build_libubsan}
@@ -1496,8 +1534,8 @@ ln -sf ../`echo ../../../../lib64/libgfortran.so.3.* | 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.5.* | sed 's,^.*libg,libg,'`' )' > libgo.so
-echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.5.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.7.* | sed 's,^.*libg,libg,'`' )' > libgo.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.7.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so
 %endif
 %if %{build_libquadmath}
 rm -f libquadmath.so
@@ -1516,8 +1554,8 @@ echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libatomic.so.1.* | sed 's,
 %endif
 %if %{build_libasan}
 rm -f libasan.so
-echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libasan.so.1.* | sed 's,^.*liba,liba,'`' )' > libasan.so
-echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libasan.so.1.* | sed 's,^.*liba,liba,'`' )' > 32/libasan.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libasan.so.2.* | sed 's,^.*liba,liba,'`' )' > libasan.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libasan.so.2.* | sed 's,^.*liba,liba,'`' )' > 32/libasan.so
 mv ../../../../lib/libasan_preinit.o 32/libasan_preinit.o
 %endif
 %if %{build_libubsan}
@@ -1615,11 +1653,13 @@ 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 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 libcilkrts.a \) \
+		    -o -name libubsan.a -o -name liblsan.a -o -name libcilkrts.a \
+		    -o -name libcc1.a \) \
 		 -a -type f`
 popd
 chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgfortran.so.3.*
 chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgomp.so.1.*
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libcc1.so.0.*
 %if %{build_libquadmath}
 chmod 755 %{buildroot}%{_prefix}/%{_lib}/libquadmath.so.0.*
 %endif
@@ -1630,7 +1670,7 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/libitm.so.1.*
 chmod 755 %{buildroot}%{_prefix}/%{_lib}/libatomic.so.1.*
 %endif
 %if %{build_libasan}
-chmod 755 %{buildroot}%{_prefix}/%{_lib}/libasan.so.1.*
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libasan.so.2.*
 %endif
 %if %{build_libubsan}
 chmod 755 %{buildroot}%{_prefix}/%{_lib}/libubsan.so.0.*
@@ -1645,7 +1685,7 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/libtsan.so.0.*
 chmod 755 %{buildroot}%{_prefix}/%{_lib}/liblsan.so.0.*
 %endif
 %if %{build_go}
-chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.5.*
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.7.*
 %endif
 chmod 755 %{buildroot}%{_prefix}/%{_lib}/libobjc.so.4.*
 
@@ -1702,7 +1742,6 @@ 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}-gcc-%{version} || :
 rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gfortran || :
 rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gccgo || :
 rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gcj || :
@@ -1817,6 +1856,16 @@ if [ $1 = 0 -a -f %{_infodir}/gnat_rm.info.gz ]; then
     --info-dir=%{_infodir} %{_infodir}/gnat-style.info.gz || :
 fi
 
+%post go
+%{_sbindir}/update-alternatives --install \
+  %{_prefix}/bin/go go %{_prefix}/bin/go.gcc 92 \
+  --slave %{_prefix}/bin/gofmt gofmt %{_prefix}/bin/gofmt.gcc
+
+%preun go
+if [ $1 = 0 ]; then
+  %{_sbindir}/update-alternatives --remove go %{_prefix}/bin/go.gcc
+fi
+
 # Because glibc Prereq's libgcc and /sbin/ldconfig
 # comes from glibc, it might not exist yet when
 # libgcc is installed
@@ -1871,6 +1920,26 @@ fi
 
 %postun -n libgomp -p /sbin/ldconfig
 
+%post gdb-plugin -p /sbin/ldconfig
+
+%postun gdb-plugin -p /sbin/ldconfig
+
+%post -n libgccjit -p /sbin/ldconfig
+
+%postun -n libgccjit -p /sbin/ldconfig
+
+%post -n libgccjit-devel
+if [ -f %{_infodir}/libgccjit.info.gz ]; then
+  /sbin/install-info \
+    --info-dir=%{_infodir} %{_infodir}/libgccjit.info.gz || :
+fi
+
+%preun -n libgccjit-devel
+if [ $1 = 0 -a -f %{_infodir}/libgccjit.info.gz ]; then
+  /sbin/install-info --delete \
+    --info-dir=%{_infodir} %{_infodir}/libgccjit.info.gz || :
+fi
+
 %post -n libquadmath
 /sbin/ldconfig
 if [ -f %{_infodir}/libquadmath.info.gz ]; then
@@ -1936,6 +2005,7 @@ fi
 %{_prefix}/bin/c99
 %{_prefix}/bin/gcc
 %{_prefix}/bin/gcov
+%{_prefix}/bin/gcov-tool
 %{_prefix}/bin/gcc-ar
 %{_prefix}/bin/gcc-nm
 %{_prefix}/bin/gcc-ranlib
@@ -1949,6 +2019,7 @@ fi
 %{_prefix}/bin/ppc-%{_vendor}-%{_target_os}-gcc
 %endif
 %{_prefix}/bin/%{gcc_target_platform}-gcc
+%{_prefix}/bin/%{gcc_target_platform}-gcc-%{version}
 %{_mandir}/man1/gcc.1*
 %{_mandir}/man1/gcov.1*
 %{_infodir}/gcc*
@@ -1974,6 +2045,7 @@ fi
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/syslimits.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/unwind.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/omp.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/openacc.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stdint.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stdint-gcc.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stdalign.h
@@ -2022,6 +2094,20 @@ fi
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mm3dnow.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/cpuid.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/cross-stdarg.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/avx512bwintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/avx512dqintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/avx512ifmaintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/avx512ifmavlintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/avx512vbmiintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/avx512vbmivlintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/avx512vlbwintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/avx512vldqintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/avx512vlintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/clflushoptintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/clwbintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/pcommitintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/xsavecintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/xsavesintrin.h
 %endif
 %ifarch ia64
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/ia64intrin.h
@@ -2042,9 +2128,11 @@ fi
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/unwind-arm-common.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mmintrin.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/arm_neon.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/arm_acle.h
 %endif
 %ifarch aarch64
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/arm_neon.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/arm_acle.h
 %endif
 %ifarch sparc sparcv9 sparc64
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/visintrin.h
@@ -2076,9 +2164,6 @@ fi
 %if %{build_libasan}
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libsanitizer.spec
 %endif
-%if %{build_cloog}
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libcloog-isl.so.*
-%endif
 %ifarch sparcv9 ppc
 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/crt*.o
@@ -2370,6 +2455,13 @@ fi
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib.f90
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib.mod
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib_kinds.mod
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/openacc.f90
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/openacc.mod
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/openacc_kinds.mod
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/openacc_lib.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/ieee_arithmetic.mod
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/ieee_exceptions.mod
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/ieee_features.mod
 %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/f951
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgfortran.spec
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgfortranbegin.a
@@ -2384,6 +2476,7 @@ fi
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libcaf_single.a
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgfortran.a
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgfortran.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/finclude
 %endif
 %ifarch %{multilib_64_archs}
 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
@@ -2391,6 +2484,7 @@ fi
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libcaf_single.a
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgfortran.a
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgfortran.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/finclude
 %endif
 %doc rpm.doc/gfortran/*
 
@@ -2502,6 +2596,7 @@ fi
 %files -n libgomp
 %defattr(-,root,root,-)
 %{_prefix}/%{_lib}/libgomp.so.1*
+%{_prefix}/%{_lib}/libgomp-plugin-host_nonshm.so.1*
 %{_infodir}/libgomp.info*
 %doc rpm.doc/changelogs/libgomp/ChangeLog*
 
@@ -2608,7 +2703,7 @@ fi
 %if %{build_libasan}
 %files -n libasan
 %defattr(-,root,root,-)
-%{_prefix}/%{_lib}/libasan.so.1*
+%{_prefix}/%{_lib}/libasan.so.2*
 
 %files -n libasan-static
 %defattr(-,root,root,-)
@@ -2716,8 +2811,14 @@ fi
 %if %{build_go}
 %files go
 %defattr(-,root,root,-)
+%ghost %{_prefix}/bin/go
+%{_prefix}/bin/go.gcc
 %{_prefix}/bin/gccgo
+%ghost %{_prefix}/bin/gofmt
+%{_prefix}/bin/gofmt.gcc
 %{_mandir}/man1/gccgo.1*
+%{_mandir}/man1/go.1*
+%{_mandir}/man1/gofmt.1*
 %dir %{_prefix}/lib/gcc
 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}
 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
@@ -2725,6 +2826,7 @@ fi
 %dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
 %dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
 %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/go1
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cgo
 %ifarch sparcv9 ppc
 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgo.so
@@ -2748,7 +2850,7 @@ fi
 
 %files -n libgo
 %defattr(-,root,root,-)
-%{_prefix}/%{_lib}/libgo.so.5*
+%{_prefix}/%{_lib}/libgo.so.7*
 %doc rpm.doc/libgo/*
 
 %files -n libgo-devel
@@ -2797,420 +2899,42 @@ fi
 %endif
 %endif
 
+%files -n libgccjit
+%defattr(-,root,root,-)
+%{_prefix}/%{_lib}/libgccjit.so.*
+%doc rpm.doc/changelogs/gcc/jit/ChangeLog*
+
+%files -n libgccjit-devel
+%defattr(-,root,root,-)
+%{_prefix}/%{_lib}/libgccjit.so
+%{_prefix}/include/libgccjit*.h
+%{_infodir}/libgccjit.info*
+%doc rpm.doc/libgccjit-devel/*
+%doc gcc/jit/docs/examples
+
 %files plugin-devel
 %defattr(-,root,root,-)
 %dir %{_prefix}/lib/gcc
 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}
 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/plugin
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/plugin
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/plugin/gtype.state
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/plugin/include
 %dir %{_prefix}/libexec/gcc
 %dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
 %dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
 %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/plugin
 
+%files gdb-plugin
+%defattr(-,root,root,-)
+%{_prefix}/%{_lib}/libcc1.so*
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/plugin
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/plugin/libcc1plugin.so*
+%doc rpm.doc/changelogs/libcc1/ChangeLog*
+
 %changelog
-* Thu Jan  8 2015 Jakub Jelinek <jakub at redhat.com> 4.9.2-5
-- don't remove tablejumps in rtl_tidy_fallthru_edge (#1136939,
-  PR rtl-optimization/64536)
-
-* Wed Jan  7 2015 Jakub Jelinek <jakub at redhat.com> 4.9.2-4
-- update from the 4.9 branch
-  - PRs ada/64492, c++/38958, c++/60955, c++/63657, c++/63658, c++/64029,
-	c++/64251, c++/64297, c++/64352, c++/64487, fortran/64244,
-	libstdc++/64302, libstdc++/64303, rtl-optimization/64010,
-	target/64409, target/64507
-- backport -mskip-rax-setup support from trunk
-- fix -fsanitize=float-cast-overflow (PR sanitizer/64344)
-- fix handling of fortran components vs. cray pointers (#1134560,
-  PR fortran/62174)
-- package libcilkrts.spec (#1173905)
-
-* Wed Dec 17 2014 Jakub Jelinek <jakub at redhat.com> 4.9.2-3
-- update from the 4.9 branch
-  - PRs libstdc++/64239, sanitizer/64265, target/64200,
-	tree-optimization/63551, tree-optimization/64269
-- fix up SANITIZE_* enum values, so that -fsanitize=bool is independent
-  from -fsanitize=float-divide-by-zero and -fsanitize=enum is independent
-  from -fsanitize=float-cast-overflow (#1173185)
-- fix -fsanitize=float-cast-overflow in C (#1173185, PR sanitizer/64289)
-- fix -fsanitize=thread (PR sanitizer/64336)
-- fix up Fortran DATA error recovery (#1115207, PR fortran/61669)
-
-* Fri Dec 12 2014 Jakub Jelinek <jakub at redhat.com> 4.9.2-2
-- update from the 4.9 branch
-  - PRs ada/42978, ada/47500, bootstrap/63703, bootstrap/64213, c++/56493,
-	c++/63265, c++/63849, c/52769, c/59708, fortran/63938, ipa/63551,
-	ipa/63838, ipa/64153, libstdc++/61947, libstdc++/63497,
-	libstdc++/63840, libstdc++/64103, libstdc++/64140, libstdc++/64203,
-	middle-end/63665, middle-end/63738, middle-end/63762,
-	middle-end/64067, middle-end/64111, middle-end/64225,
-	preprocessor/60436, rtl-optimization/63475, rtl-optimization/63483,
-	rtl-optimization/64037, sanitizer/63913, target/50751, target/51244,
-	target/53976, target/55351, target/56846, target/59593, target/60111,
-	target/61535, target/63538, target/63661, target/63673, target/63783,
-	target/63947, target/64108, target/64113, target/64115,
-	testsuite/63305, tree-optimization/61686, tree-optimization/61750,
-	tree-optimization/61927, tree-optimization/62021,
-	tree-optimization/62167, tree-optimization/62238,
-	tree-optimization/63605, tree-optimization/63738,
-	tree-optimization/63841, tree-optimization/63915,
-	tree-optimization/64191
-
-* Sat Nov  1 2014 Jakub Jelinek <jakub at redhat.com> 4.9.2-1
-- update from the 4.9 branch
-  - GCC 4.9.2 release
-  - PRs sanitizer/63638, sanitizer/63697, tree-optimization/63530
-- handle REG_EQ* notes in REE (PR rtl-optimization/63659)
-- include asan/lsan sanitizer/ includes
-
-* Fri Oct 24 2014 Jakub Jelinek <jakub at redhat.com> 4.9.1-13
-- update from the 4.9 branch
-  - PRs bootstrap/63632, libfortran/63589, libstdc++/63500,
-	lto/63603, tree-optimization/63563
-- backport -f{,no-}sanitize-recover=<list> support from the trunk
-- backport var-tracking fix (#1151226, PR debug/63623)
-
-* Fri Oct 17 2014 Jakub Jelinek <jakub at redhat.com> 4.9.1-12
-- update from the 4.9 branch
-  - PRs ada/63225, c++/63306, c++/63405, c++/63415, c++/63437, c++/63455,
-	c/63495, debug/63342, fortran/59488, ipa/61144, ipa/62121,
-	libgfortran/63460, libgomp/61200, libstdc++/57440, libstdc++/59603,
-	libstdc++/63199, libstdc++/63449, libstdc++/63456, lto/62026,
-	regression/61510, rtl-optimization/57003, rtl-optimization/63448,
-	sanitizer/61100, sanitizer/61530, sanitizer/61547, sanitizer/61897,
-	sanitizer/62089, sanitizer/62140, target/52941, target/63428,
-	tree-optimization/61969, tree-optimization/62031,
-	tree-optimization/63302, tree-optimization/63375,
-	tree-optimization/63379, tree-optimization/63380
-  - initial -fsanitize=kernel-address support
-
-* Tue Sep 30 2014 Jakub Jelinek <jakub at redhat.com> 4.9.1-11
-- update from the 4.9 branch
-  - PRs c++/61465, c++/62219, c++/63249, inline-asm/63282, middle-end/63247,
-	plugins/63410, sanitizer/61272, target/49423, target/61407,
-	target/62218, target/63335, tree-optimization/63341
-- avoid fnsplit if there are forced labels accessed in between the partitions
-  (#1106758, PR tree-optimization/63186)
-
-* Mon Sep 22 2014 Jakub Jelinek <jakub at redhat.com> 4.9.1-10
-- update from the 4.9 branch
-  - PRs c++/62017, c++/63241, c++/63248, debug/63284, debug/63328, ipa/61654,
-	target/61853, testsuite/63292
-- fix scheduler -fcompare-debug issue (#1140872, PR debug/63285)
-
-* Fri Sep 12 2014 Jakub Jelinek <jakub at redhat.com> 4.9.1-9
-- update from the 4.9 branch
-  - PRs c++/58624, c++/61214, c++/61659, c++/62129, c++/62224, c++/62659,
-	c++/63139, c/61271, c/62294, fortran/62106, fortran/62142,
-	fortran/62214, fortran/62215, fortran/62270, ipa/60449, ipa/61986,
-	ipa/62015, libgfortran/62188, libstdc++/62264, libstdc++/63219,
-	middle-end/61776, other/62008, other/62248, rtl-optimization/61672,
-	rtl-optimization/62004, rtl-optimization/62030,
-	rtl-optimization/62079, rtl-optimization/62146, target/61641,
-	target/61996, target/62011, target/62038, target/62040, target/62111,
-	target/62195, target/62261, target/62262, target/62312, target/63209,
-	target/63223, target/63228, testsuite/56194, tree-optimization/60196,
-	tree-optimization/62075, tree-optimization/62091,
-	tree-optimization/62175, tree-optimization/63189
-- fix s390{,x} return address handling in epilogues (#1131899,
-  PR target/62662)
-
-* Fri Aug 15 2014 Jakub Jelinek <jakub at redhat.com> 4.9.1-8
-- update from the 4.9 branch
-  - PRs fortran/62076, fortran/62107, lto/62032, middle-end/62092,
-	target/61713
-- allow elements/components of allocatables in !$omp atomic
-  (PR fortran/62131)
-- require/build require >= 2.24 binutils
-
-* Thu Aug 14 2014 Jakub Jelinek <jakub at redhat.com> 4.9.1-7
-- fix up scheduler deps handling fix (PR target/62025)
-- vectorization fix (PR tree-optimization/62073)
-
-* Wed Aug 13 2014 Jakub Jelinek <jakub at redhat.com> 4.9.1-6
-- update from the 4.9 branch
-  - PRs c++/58714, c++/60872, c++/61959, c++/61994, fortran/61999,
-	libstdc++/61667, other/61962, tree-optimization/60707
-  - fix scheduler deps handling of inc with clobbers vs. mem user (#1126463,
-    PR target/62025)
-- optimize slightly aarch64 unwind info
-- backport arm vcvtf2i fix from trunk (PR target/62098)
-- backport fold_ctor_reference big-endian fix (PR middle-end/62103)
-
-* Thu Aug  7 2014 Jakub Jelinek <jakub at redhat.com> 4.9.1-5
-- update from the 4.9 branch
-  - PRs debug/61923, libstdc++/58962, libstdc++/61374, libstdc++/61390,
-	libstdc++/61946, middle-end/61455, other/61963, target/60102,
-	tree-optimization/61320, tree-optimization/61375
-
-* Fri Aug  1 2014 Jakub Jelinek <jakub at redhat.com> 4.9.1-3
-- update from the 4.9 branch
-  - PRs fortran/61780, libobjc/61920, libstdc++/60037, target/47230,
-	target/61656, target/61662, target/61794, target/61844,
-	target/61855, tree-optimization/61964
-  - fix libgfortran overflows on allocation (CVE-2014-5044)
-- backport -fsanitize=alignment support from the trunk
-
-* Thu Jul 24 2014 Dan HorĂ¡k <dan[at]danny.cz> 4.9.1-2.1
-- fix a LRA inheritance bug (#1117799)
-
-* Thu Jul 17 2014 Jakub Jelinek <jakub at redhat.com> 4.9.1-2
-- update from the 4.9 branch
-  - PRs c-family/61741, rtl-optimization/61801, target/61737,
-	tree-optimization/61779
-
-* Wed Jul 16 2014 Jakub Jelinek <jakub at redhat.com> 4.9.1-1
-- update from the 4.9 branch
-  - GCC 4.9.1 release
-  - PRs c++/58155, c++/58636, c++/61661, fortran/41936, fortran/58883,
-	fortran/61459, libgfortran/61640, middle-end/53590,
-	middle-end/61654, target/59843, target/61062, target/61544,
-	tree-optimization/61680, tree-optimization/61681,
-	tree-optimization/61684, tree-optimization/61725
-- enable libitm on aarch64
-- emit .note.GNU-stack on aarch64 (#1119885)
-- small -fsanitize=bounds fix from the trunk
-
-* Sat Jul 12 2014 Tom Callaway <spot at fedoraproject.org> 4.9.0-15
-- fix license handling
-
-* Wed Jul  2 2014 Jakub Jelinek <jakub at redhat.com> 4.9.0-14
-- update from the 4.9 branch
-  - OpenMP 4.0 Fortran support
-  - PRs c++/51253, c++/58704, c++/58753, c++/58781, c++/58930, c++/59867,
-	c++/60249, c++/61242, c++/61382, c++/61433, c++/61488, c++/61500,
-	c++/61537, c++/61539, c++/61566, c++/61614, c++/61647, fortran/60127,
-	fortran/60928, libgfortran/61499, middle-end/57541, target/61503,
-	target/61542, target/61586, target/61633, tree-optimization/57233,
-	tree-optimization/61299, tree-optimization/61306
-- fix combiner on s390 (#1102324, PR rtl-optimization/61673)
-- some -fsanitize=undefined fixes from the trunk
-
-* Wed Jun 25 2014 Jakub Jelinek <jakub at redhat.com> 4.9.0-13
-- update from the 4.9 branch
-  - PRs bootstrap/61583, c++/61556, ipa/61211, ipa/61540, libstdc++/61532,
-	target/61570
-- backport -fsanitize=bounds support from the trunk
-
-* Thu Jun 19 2014 Jakub Jelinek <jakub at redhat.com> 4.9.0-12
-- update from the 4.9 branch
-  - PRs c++/59296, c++/60605, c++/61507, debug/57519
-
-* Wed Jun 18 2014 Kyle McMartin <kyle at redhat.com> 4.9.0-11
-- avoid applying patch 16 twice
-
-* Wed Jun 18 2014 Richard Henderson <rth at redhat.com>
-- import fix for PR target/61545 from the 4.9 branch
-
-* Tue Jun 17 2014 Jakub Jelinek <jakub at redhat.com> 4.9.0-10
-- update from the 4.9 branch
-  - PRs fortran/45187, ipa/61186, libstdc++/60326, libstdc++/61269,
-	rtl-optimization/61094, rtl-optimization/61446, target/61415,
-	target/61423, target/61483
-
-* Thu Jun 12 2014 Jakub Jelinek <jakub at redhat.com> 4.9.0-9
-- update from the 4.9 branch
-  - PRs c++/61343, fortran/61406, fortran/61418, ipa/61393,
-	libfortran/61173, middle-end/61456, middle-end/61486,
-	target/61300, target/61431, target/61443, tree-optimization/61452
-  - fix up jump threading (#1094975, PR tree-optimization/61289)
-- include vxworks-dummy.h in arm gcc-plugin-devel (PR plugins/45078)
-
-* Thu Jun  5 2014 Jakub Jelinek <jakub at redhat.com> 4.9.0-8
-- enable ada on arm
-
-* Wed Jun  4 2014 Jakub Jelinek <jakub at redhat.com> 4.9.0-7
-- update from the 4.9 branch
-  - PRs c++/61020, c++/61134, c/58942, c/61053, ipa/61160, libstdc++/60734,
-	libstdc++/61227, rtl-optimization/60866, rtl-optimization/60901,
-	target/61239, tree-optimization/61383
-
-* Thu May 29 2014 Jakub Jelinek <jakub at redhat.com> 4.9.0-6
-- update from the 4.9 branch
-  - PRs bootstrap/60984, c++/60189, c/60189, c/61191, fortran/60834,
-	libfortran/61310, libgcc/61152, libstdc++/61143, libstdc++/61329,
-	lto/60820, lto/61012, middle-end/58094, middle-end/61010,
-	middle-end/61045, middle-end/61252, rtl-optimization/61215,
-	rtl-optimization/61325, target/61044, target/61202, target/61208,
-	target/61231, target/61249, target/61271, tree-optimization/60979
-- backport -fsanitize=float-cast-overflow support from trunk
-
-* Sun May 18 2014 Jakub Jelinek <jakub at redhat.com> 4.9.0-5
-- update from the 4.9 branch
-  - PRs debug/61013, ipa/60854, ipa/60897, ipa/61085, libfortran/61187,
-	libgcc/61097, libstdc++/60966, lto/60981, rtl-optimization/60969,
-	target/60969, target/61193, tree-optimization/61158
-
-* Wed May 14 2014 Jakub Jelinek <jakub at redhat.com> 4.9.0-4
-- update from the 4.9 branch
-  - PRs c++/60019, c++/60999, c++/61083, c++/61151, driver/61106, ipa/60973,
-	libfortran/61049, libstdc++/60594, libstdc++/61023, libstdc++/61086,
-	libstdc++/61117, target/59952, target/60991, target/61055,
-	target/61060, target/61092, tree-optimization/57864,
-	tree-optimization/60902, tree-optimization/61009
-- obsolete gcc-java and libjava*, remove all traces of build_java from the
-  spec file (#1096474, #1095513)
-- backport -fsanitize=float-divide-by-zero support from trunk
-
-* Tue May  6 2014 Jakub Jelinek <jakub at redhat.com> 4.9.0-3
-- update from the 4.9 branch
-  - PRs driver/61065, ipa/60965
-- disable gcc-java and libjava, broken by recent eclipse-ecj changes
-
-* Mon May  5 2014 Jakub Jelinek <jakub at redhat.com> 4.9.0-2
-- update from the 4.9 branch
-  - PRs c++/60951, c++/60980, c++/60992, fortran/60495, ipa/60911, ipa/60912,
-	libstdc++/59476, libstdc++/60497, libstdc++/60710, libstdc++/61036,
-	lto/60720, middle-end/60891, middle-end/60895, target/60909,
-	target/60941, target/61026, tree-optimization/60903,
-	tree-optimization/60930, tree-optimization/60960,
-	tree-optimization/60971
-- backport -fno-sanitize-recover and -fsanitize-undefined-trap-on-error
-  support from the trunk (PR sanitizer/60275)
-
-* Tue Apr 29 2014 Richard Henderson <rth at redhat.com>
-- enable ada, go and libatomic on aarch64
-
-* Tue Apr 22 2014 Jakub Jelinek <jakub at redhat.com> 4.9.0-1
-- update from the 4.9 branch
-  - GCC 4.9.0 release
-  - PRs c/59073, c/60819, fortran/58085, fortran/60717, libfortran/60810,
-	middle-end/55022, middle-end/60281, middle-end/60467,
-	middle-end/60469, middle-end/60849, other/43620, other/60644,
-	target/60839, target/60847, target/60868, tree-optimization/59817,
-	tree-optimization/60453, tree-optimization/60823,
-	tree-optimization/60836, tree-optimization/60841,
-	tree-optimization/60844
-
-* Fri Apr 11 2014 Jakub Jelinek <jakub at redhat.com> 4.9.0-0.10
-- update from the trunk and 4.9 branch
-  - GCC 4.9.0-rc1
-  - PRs ada/54040, ada/59346, c++/52844, ipa/60761, lto/60567,
-	middle-end/60556, middle-end/60797, other/59055, testsuite/60773
-  - fix CSE with non-volatile inline asm with multiple results or
-    single result and clobbers (#1086332, PR rtl-optimization/60663)
-- enable ppc64le in the spec file
-
-* Wed Apr  9 2014 Jakub Jelinek <jakub at redhat.com> 4.9.0-0.9
-- update from the trunk
-  - PRs ada/60703, bootstrap/60620, bootstrap/60719, bootstrap/60743,
-	c++/21113, c++/44613, c++/44859, c++/58207, c++/59115, c++/60374,
-	c++/60573, c++/60626, c++/60642, c++/60708, c++/60713, c++/60731,
-	debug/55794, debug/60655, fortran/60191, ipa/59626, ipa/60640,
-	ipa/60659, ipa/60746, libstdc++/60270, middle-end/60706,
-	middle-end/60729, middle-end/60750, rtl-optimization/60155,
-	rtl-optimization/60604, rtl-optimization/60700,
-	rtl-optimization/60776, sanitizer/60745, target/43751, target/54083,
-	target/54407, target/60034, target/60363, target/60504, target/60602,
-	target/60609, target/60650, target/60657, target/60697, target/60704,
-	target/60735, target/60763, testsuite/60671, testsuite/60672,
-	tree-optimization/60505, tree-optimization/60656,
-	tree-optimization/60733, tree-optimization/60740,
-	tree-optimization/60766, tree-optimization/60785
-
-* Fri Mar 28 2014 Jakub Jelinek <jakub at redhat.com> 4.9.0-0.8
-- update from the trunk
-  - PRs c++/52369, c++/60331, c++/60375, c++/60566, c++/60574, c++/60627,
-	c++/60628, c++/60689, c/35449, c/37428, c/39525, c/50347,
-	fortran/34928, fortran/58880, fortran/60522, fortran/60677, ipa/60315,
-	ipa/60600, libstdc++/60612, libstdc++/60658, middle-end/60635,
-	middle-end/60682, other/59545, rtl-optimization/60452,
-	rtl-optimization/60501, rtl-optimization/60650, sanitizer/56781,
-	sanitizer/60636, target/60580, target/60672, target/60675,
-	target/60693, testsuite/58013
-- inliner speed fixes (PR ipa/60243)
-- fortran wrong-code fix (PR fortran/60576)
-- fix IPA-SRA with mismatched types between caller and callee
-  (PR middle-end/60647)
-- fix expansion of switch with constant index not optimized during gimple
-  passes (PR target/60648)
-
-* Mon Mar 24 2014 Jakub Jelinek <jakub at redhat.com> 4.9.0-0.7
-- update from the trunk
-  - PRs c++/60384, debug/60603, fortran/60599, ipa/59176, ipa/60419,
-	libstdc++/60587, libstdc++/60623, rtl-optimization/60601,
-	sanitizer/60613, target/60598, target/60610, tree-optimization/60577
-
-* Thu Mar 20 2014 Jakub Jelinek <jakub at redhat.com> 4.9.0-0.6
-- update from the trunk
-  - PRs ada/39172, c++/51474, c++/54250, c++/59571, c++/60305, c++/60332,
-	c++/60390, c++/60391, c++/60572, c/55383, fortran/55207,
-	fortran/60283, fortran/60543, fortran/60549, libfortran/48600,
-	libfortran/58324, libstdc++/60564, lto/59543, lto/60571,
-	middle-end/60534, middle-end/60553, middle-end/60597, other/60589,
-	rtl-optimization/56356, sanitizer/60535, sanitizer/60557,
-	sanitizer/60569, target/60039, target/60516, target/60562,
-	target/60563, target/60568, testsuite/58851, testsuite/60590,
-	tree-optimization/60559
-
-* Sat Mar 15 2014 Jakub Jelinek <jakub at redhat.com> 4.9.0-0.5
-- update from the trunk
-  - PRs ada/51483, ada/60411, bootstrap/58572, c++/53492, c++/58609,
-	c++/60033, c++/60254, c++/60367, c++/60383, c++/60389, c++/60393,
-	c++/60532, c/60197, debug/60438, fortran/51976, fortran/60392,
-	fortran/60447, ipa/58721, ipa/60457, libfortran/38199,
-	libfortran/60128, libgcc/59339, libgcc/60472, libgfortran/60128,
-	libstdc++/59392, libstdc++/60499, lto/60424, lto/60427, lto/60461,
-	middle-end/36282, middle-end/60418, middle-end/60445,
-	middle-end/60474, middle-end/60482, middle-end/60484,
-	middle-end/60518, rtl-optimization/57189, rtl-optimization/57320,
-	rtl-optimization/60508, target/58271, target/58595, target/59396,
-	target/60264, target/60486, target/60525, tree-optimization/59025,
-	tree-optimization/59779, tree-optimization/60429,
-	tree-optimization/60454, tree-optimization/60485,
-	tree-optimization/60502
-
-* Thu Mar  6 2014 Jakub Jelinek <jakub at redhat.com> 4.9.0-0.4
-- update from the trunk
-  - PRs c++/60361, c++/60409, debug/60381, testsuite/59308
-
-* Wed Mar  5 2014 Jakub Jelinek <jakub at redhat.com> 4.9.0-0.3
-- update from the trunk
-  - PRs bootstrap/48230, bootstrap/50927, bootstrap/52466, bootstrap/60343,
-	c++/11586, c++/14710, c++/50025, c++/54359, c++/54440, c++/55877,
-	c++/57132, c++/58170, c++/58606, c++/58610, c++/58678, c++/58835,
-	c++/58845, c++/58873, c++/59231, c++/59347, c++/60046, c++/60051,
-	c++/60052, c++/60053, c++/60064, c++/60065, c++/60108, c++/60146,
-	c++/60167, c++/60182, c++/60185, c++/60186, c++/60187, c++/60190,
-	c++/60215, c++/60216, c++/60219, c++/60222, c++/60224, c++/60225,
-	c++/60227, c++/60241, c++/60248, c++/60250, c++/60251, c++/60252,
-	c++/60253, c++/60267, c++/60272, c++/60311, c++/60312, c++/60314,
-	c++/60328, c++/60345, c++/60347, c++/60353, c++/60376, c++/60377,
-	c++/60379, c++/60415, c++/60417, c/37743, c/60195, debug/56563,
-	debug/57232, debug/59992, debug/60152, driver/60233, fortran/49397,
-	fortran/55907, fortran/59599, fortran/60231, fortran/60232,
-	fortran/60234, fortran/60236, fortran/60286, fortran/60302,
-	fortran/60341, fortran/60359, ipa/55260, ipa/58555, ipa/60150,
-	ipa/60243, ipa/60266, ipa/60306, ipa/60327, libfortran/58015,
-	libfortran/59313, libfortran/60148, libgcc/60166, libgcj/55637,
-	libjava/60261, libstdc++/58338, libstdc++/60308, lto/53808, lto/60179,
-	lto/60295, lto/60319, lto/60404, lto/60405, middle-end/58477,
-	middle-end/59223, middle-end/60147, middle-end/60175,
-	middle-end/60221, middle-end/60291, objc++/60398, objc/56870,
-	pch/60010, plugins/59335, preprocessor/58844, preprocessor/60400,
-	rtl-optimization/49847, rtl-optimization/52714,
-	rtl-optimization/58960, rtl-optimization/59535,
-	rtl-optimization/60131, rtl-optimization/60268,
-	rtl-optimization/60292, rtl-optimization/60317, sanitizer/60142,
-	target/46898, target/55426, target/57896, target/57935, target/57936,
-	target/58675, target/59222, target/59794, target/59799, target/60071,
-	target/60169, target/60193, target/60203, target/60204, target/60205,
-	target/60207, target/60280, target/60298, testsuite/60173,
-	tree-optimization/56490, tree-optimization/58028,
-	tree-optimization/60174, tree-optimization/60183,
-	tree-optimization/60276, tree-optimization/60382
-- configure with --enable-gnu-indirect-function on architectures
-  and distros that support it and don't support it by default
-  yet (#1067245)
-- remove libgo P.224 elliptic curve (#1066539)
-
-* Thu Feb 13 2014 Jakub Jelinek <jakub at redhat.com> 4.9.0-0.2
-- update from the trunk
-  - PRs bootstrap/59878, c++/60047, c/60101, debug/59776, fortran/52370,
-	libffi/60073, lto/59468, lto/60060, middle-end/59737,
-	middle-end/60092, rtl-optimization/60116, target/43546, target/49008,
-	target/59927, target/60137, target/60151, testsuite/58630
-- upgrade to newer cloog and isl
-
-* Tue Feb 11 2014 Jakub Jelinek <jakub at redhat.com> 4.9.0-0.1
+* Fri Jan 23 2015 Jakub Jelinek <jakub at redhat.com> 5.0.0-0.5
 - new package
diff --git a/gcc49-aarch64-async-unw-tables.patch b/gcc5-aarch64-async-unw-tables.patch
similarity index 100%
rename from gcc49-aarch64-async-unw-tables.patch
rename to gcc5-aarch64-async-unw-tables.patch
diff --git a/gcc49-hack.patch b/gcc5-hack.patch
similarity index 66%
rename from gcc49-hack.patch
rename to gcc5-hack.patch
index 1903e95..950ff63 100644
--- a/gcc49-hack.patch
+++ b/gcc5-hack.patch
@@ -100,3 +100,60 @@
  @USE_LIBGCJ_BC_TRUE@	$(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
  @USE_LIBGCJ_BC_TRUE@	-o $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 -lgcj || exit; \
  @USE_LIBGCJ_BC_TRUE@	rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1; \
+--- 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/gcc49-i386-libgomp.patch b/gcc5-i386-libgomp.patch
similarity index 100%
rename from gcc49-i386-libgomp.patch
rename to gcc5-i386-libgomp.patch
diff --git a/gcc5-isl-dl.patch b/gcc5-isl-dl.patch
new file mode 100644
index 0000000..104296f
--- /dev/null
+++ b/gcc5-isl-dl.patch
@@ -0,0 +1,561 @@
+--- gcc/Makefile.in.jj	2012-12-13 17:09:20.000000000 +0100
++++ gcc/Makefile.in	2012-12-14 11:45:22.585670055 +0100
+@@ -1006,7 +1006,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@
+@@ -2050,6 +2050,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))
+ #
+ # Generate header and source files from the machine description,
+ # and compile them.
+--- gcc/graphite-poly.h.jj	2012-12-13 11:31:27.000000000 +0100
++++ gcc/graphite-poly.h	2012-12-14 13:41:41.970800726 +0100
+@@ -22,6 +22,478 @@ along with GCC; see the file COPYING3.
+ #ifndef GCC_GRAPHITE_POLY_H
+ #define GCC_GRAPHITE_POLY_H
+ 
++#include <isl/aff.h>
++#include <isl/schedule.h>
++#include <isl/ilp.h>
++#include <isl/flow.h>
++#include <isl/options.h>
++#include <isl/ast.h>
++#include <isl/ast_build.h>
++#include <isl/val_gmp.h>
++#include <dlfcn.h>
++#ifdef HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE
++#define DYNSYM_ZERO_DISTANCE DYNSYM (isl_band_member_is_coincident)
++#else
++#define DYNSYM_ZERO_DISTANCE DYNSYM (isl_band_member_is_zero_distance)
++#endif
++#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_ZERO_DISTANCE; \
++  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_fuse); \
++  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_get_num_gmp); \
++  DYNSYM (isl_val_int_from_gmp); \
++  DYNSYM (isl_val_int_from_si); \
++  DYNSYM (isl_val_int_from_ui); \
++  DYNSYM (isl_val_mul); \
++  DYNSYM (isl_val_neg); \
++  DYNSYM (isl_val_sub);
++
++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)
++#ifdef HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE
++#define isl_band_member_is_coincident (*isl_pointers__.p_isl_band_member_is_coincident)
++#else
++#define isl_band_member_is_zero_distance (*isl_pointers__.p_isl_band_member_is_zero_distance)
++#endif
++#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_fuse (*isl_pointers__.p_isl_options_set_schedule_fuse)
++#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_get_num_gmp (*isl_pointers__.p_isl_val_get_num_gmp)
++#define isl_val_int_from_gmp (*isl_pointers__.p_isl_val_int_from_gmp)
++#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)
++
+ typedef struct poly_dr *poly_dr_p;
+ 
+ typedef struct poly_bb *poly_bb_p;
+--- gcc/graphite.c.jj	2012-12-13 11:31:00.000000000 +0100
++++ gcc/graphite.c	2012-12-14 13:40:44.155136961 +0100
+@@ -90,6 +90,34 @@ along with GCC; see the file COPYING3.
+ #include "graphite-isl-ast-to-gimple.h"
+ #include "graphite-sese-to-poly.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.13", 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
++  return true;
++}
++
+ /* Print global statistics to FILE.  */
+ 
+ static void
+@@ -285,6 +313,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;
++    }
++
+   ctx = isl_ctx_alloc ();
+   isl_options_set_on_error (ctx, ISL_ON_ERROR_ABORT);
+   if (!graphite_initialize (ctx))
diff --git a/gcc49-java-nomulti.patch b/gcc5-java-nomulti.patch
similarity index 100%
rename from gcc49-java-nomulti.patch
rename to gcc5-java-nomulti.patch
diff --git a/gcc49-libgo-p224.patch b/gcc5-libgo-p224.patch
similarity index 98%
rename from gcc49-libgo-p224.patch
rename to gcc5-libgo-p224.patch
index 89e06e1..43509b1 100644
--- a/gcc49-libgo-p224.patch
+++ b/gcc5-libgo-p224.patch
@@ -209,7 +209,7 @@
  			case "P-384":
 --- libgo/go/crypto/x509/x509.go.jj	2013-11-07 11:59:09.000000000 +0100
 +++ libgo/go/crypto/x509/x509.go	2014-03-05 15:27:37.022439437 +0100
-@@ -305,9 +305,6 @@ func getPublicKeyAlgorithmFromOID(oid as
+@@ -306,9 +306,6 @@ func getPublicKeyAlgorithmFromOID(oid as
  
  // RFC 5480, 2.1.1.1. Named Curve
  //
@@ -219,7 +219,7 @@
  // secp256r1 OBJECT IDENTIFIER ::= {
  //   iso(1) member-body(2) us(840) ansi-X9-62(10045) curves(3)
  //   prime(1) 7 }
-@@ -320,7 +317,6 @@ func getPublicKeyAlgorithmFromOID(oid as
+@@ -321,7 +318,6 @@ func getPublicKeyAlgorithmFromOID(oid as
  //
  // NB: secp256r1 is equivalent to prime256v1
  var (
@@ -227,7 +227,7 @@
  	oidNamedCurveP256 = asn1.ObjectIdentifier{1, 2, 840, 10045, 3, 1, 7}
  	oidNamedCurveP384 = asn1.ObjectIdentifier{1, 3, 132, 0, 34}
  	oidNamedCurveP521 = asn1.ObjectIdentifier{1, 3, 132, 0, 35}
-@@ -328,8 +324,6 @@ var (
+@@ -329,8 +325,6 @@ var (
  
  func namedCurveFromOID(oid asn1.ObjectIdentifier) elliptic.Curve {
  	switch {
@@ -236,7 +236,7 @@
  	case oid.Equal(oidNamedCurveP256):
  		return elliptic.P256()
  	case oid.Equal(oidNamedCurveP384):
-@@ -342,8 +336,6 @@ func namedCurveFromOID(oid asn1.ObjectId
+@@ -343,8 +337,6 @@ func namedCurveFromOID(oid asn1.ObjectId
  
  func oidFromNamedCurve(curve elliptic.Curve) (asn1.ObjectIdentifier, bool) {
  	switch curve {
@@ -245,14 +245,14 @@
  	case elliptic.P256():
  		return oidNamedCurveP256, true
  	case elliptic.P384():
-@@ -1373,7 +1365,7 @@ func CreateCertificate(rand io.Reader, t
- 		hashFunc = crypto.SHA1
- 	case *ecdsa.PrivateKey:
+@@ -1371,7 +1363,7 @@ func signingParamsForPrivateKey(priv int
+ 		pubType = ECDSA
+ 
  		switch priv.Curve {
 -		case elliptic.P224(), elliptic.P256():
 +		case elliptic.P256():
  			hashFunc = crypto.SHA256
- 			signatureAlgorithm.Algorithm = oidSignatureECDSAWithSHA256
+ 			sigAlgo.Algorithm = oidSignatureECDSAWithSHA256
  		case elliptic.P384():
 --- libgo/go/crypto/elliptic/p224.go.jj	2012-11-15 18:26:57.000000000 +0100
 +++ libgo/go/crypto/elliptic/p224.go	2014-03-05 15:30:01.189430842 +0100
diff --git a/gcc49-libgomp-omp_h-multilib.patch b/gcc5-libgomp-omp_h-multilib.patch
similarity index 100%
rename from gcc49-libgomp-omp_h-multilib.patch
rename to gcc5-libgomp-omp_h-multilib.patch
diff --git a/gcc5-libsanitize-aarch64-va42.patch b/gcc5-libsanitize-aarch64-va42.patch
new file mode 100644
index 0000000..bd4218b
--- /dev/null
+++ b/gcc5-libsanitize-aarch64-va42.patch
@@ -0,0 +1,47 @@
+2015-01-22  Jakub Jelinek  <jakub at redhat.com>
+
+	* asan/asan_allocator.h (kAllocatorSpace, kAllocatorSize):
+	Set to 1T for __aarch64__.
+	* sanitizer_common/sanitizer_platform.h
+	(SANITIZER_CAN_USE_ALLOCATOR64): Set to 1 on __aarch64__
+	if SANITIZER_WORDSIZE is 64.
+	(SANITIZER_MMAP_RANGE_SIZE): Define to 1ULL << 42 for
+	__aarch64__.
+
+--- libsanitizer/asan/asan_allocator.h	(revision 219833)
++++ libsanitizer/asan/asan_allocator.h	(working copy)
+@@ -100,6 +100,10 @@
+ # if defined(__powerpc64__)
+ const uptr kAllocatorSpace =  0xa0000000000ULL;
+ const uptr kAllocatorSize  =  0x20000000000ULL;  // 2T.
++# elif defined(__aarch64__)
++// Valid only for 42-bit VA
++const uptr kAllocatorSpace =  0x10000000000ULL;
++const uptr kAllocatorSize  =  0x10000000000ULL;  // 1T.
+ # else
+ const uptr kAllocatorSpace = 0x600000000000ULL;
+ const uptr kAllocatorSize  =  0x40000000000ULL;  // 4T.
+--- libsanitizer/sanitizer_common/sanitizer_platform.h	(revision 219833)
++++ libsanitizer/sanitizer_common/sanitizer_platform.h	(working copy)
+@@ -79,7 +79,7 @@
+ // For such platforms build this code with -DSANITIZER_CAN_USE_ALLOCATOR64=0 or
+ // change the definition of SANITIZER_CAN_USE_ALLOCATOR64 here.
+ #ifndef SANITIZER_CAN_USE_ALLOCATOR64
+-# if defined(__aarch64__) || defined(__mips64)
++# if defined(__mips64)
+ #  define SANITIZER_CAN_USE_ALLOCATOR64 0
+ # else
+ #  define SANITIZER_CAN_USE_ALLOCATOR64 (SANITIZER_WORDSIZE == 64)
+@@ -88,10 +88,10 @@
+ 
+ // The range of addresses which can be returned my mmap.
+ // FIXME: this value should be different on different platforms,
+-// e.g. on AArch64 it is most likely (1ULL << 39). Larger values will still work
++// e.g. on AArch64 it is most likely (1ULL << 42). Larger values will still work
+ // but will consume more memory for TwoLevelByteMap.
+ #if defined(__aarch64__)
+-# define SANITIZER_MMAP_RANGE_SIZE FIRST_32_SECOND_64(1ULL << 32, 1ULL << 39)
++# define SANITIZER_MMAP_RANGE_SIZE FIRST_32_SECOND_64(1ULL << 32, 1ULL << 42)
+ #else
+ # define SANITIZER_MMAP_RANGE_SIZE FIRST_32_SECOND_64(1ULL << 32, 1ULL << 47)
+ #endif
diff --git a/gcc49-libstdc++-docs.patch b/gcc5-libstdc++-docs.patch
similarity index 96%
rename from gcc49-libstdc++-docs.patch
rename to gcc5-libstdc++-docs.patch
index ee8598a..58f4b33 100644
--- a/gcc49-libstdc++-docs.patch
+++ b/gcc5-libstdc++-docs.patch
@@ -4,7 +4,7 @@
        <a class="link" href="http://www.fsf.org/" target="_top">FSF
        </a>
      </p><p>
-+      Release 4.9.2
++      Release 5.0.0
 +    </p><p>
        Permission is granted to copy, distribute and/or modify this
        document under the terms of the GNU Free Documentation
@@ -18,7 +18,7 @@
 -  The API documentation, rendered into HTML, can be viewed online:
 +  The API documentation, rendered into HTML, can be viewed here:
  </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
-+      <a class="link" href="api/index.html" target="_top">for the 4.9.2 release, local
++      <a class="link" href="api/index.html" target="_top">for the 5.0.0 release, local
 +      </a>
 +    </p></li><li class="listitem"><p>
        <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-3.4/index.html" target="_top">for the 3.4 release
diff --git a/gcc49-libtool-no-rpath.patch b/gcc5-libtool-no-rpath.patch
similarity index 100%
rename from gcc49-libtool-no-rpath.patch
rename to gcc5-libtool-no-rpath.patch
diff --git a/gcc49-no-add-needed.patch b/gcc5-no-add-needed.patch
similarity index 94%
rename from gcc49-no-add-needed.patch
rename to gcc5-no-add-needed.patch
index b6ca777..4102e1c 100644
--- a/gcc49-no-add-needed.patch
+++ b/gcc5-no-add-needed.patch
@@ -17,15 +17,15 @@
  #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
-@@ -77,7 +77,7 @@ do {						\
+@@ -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 "
  
- /* Put all *tf routines in libgcc.  */
- #undef LIBGCC2_HAS_TF_MODE
+ #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
 @@ -82,7 +82,7 @@ see the files COPYING3 and COPYING.RUNTI
diff --git a/gcc5-ppc-jit.patch b/gcc5-ppc-jit.patch
new file mode 100644
index 0000000..76fd609
--- /dev/null
+++ b/gcc5-ppc-jit.patch
@@ -0,0 +1,22 @@
+2015-01-19  David Malcolm  <dmalcolm at redhat.com>
+
+	* config/rs6000/rs6000.c (rs6000_output_function_epilogue):
+	Support the JIT by using 0 as the language type.
+
+--- gcc/config/rs6000/rs6000.c
++++ gcc/config/rs6000/rs6000.c
+@@ -25491,11 +25491,12 @@ rs6000_output_function_epilogue (FILE *file,
+ 	 use language_string.
+ 	 C is 0.  Fortran is 1.  Pascal is 2.  Ada is 3.  C++ is 9.
+ 	 Java is 13.  Objective-C is 14.  Objective-C++ isn't assigned
+-	 a number, so for now use 9.  LTO and Go aren't assigned numbers
++	 a number, so for now use 9.  LTO, Go and JIT aren't assigned numbers
+ 	 either, so for now use 0.  */
+       if (lang_GNU_C ()
+ 	  || ! strcmp (language_string, "GNU GIMPLE")
+-	  || ! strcmp (language_string, "GNU Go"))
++	  || ! strcmp (language_string, "GNU Go")
++	  || ! strcmp (language_string, "libgccjit"))
+ 	i = 0;
+       else if (! strcmp (language_string, "GNU F77")
+ 	       || ! strcmp (language_string, "GNU Fortran"))
diff --git a/gcc49-ppc32-retaddr.patch b/gcc5-ppc32-retaddr.patch
similarity index 100%
rename from gcc49-ppc32-retaddr.patch
rename to gcc5-ppc32-retaddr.patch
diff --git a/gcc5-pr64738.patch b/gcc5-pr64738.patch
new file mode 100644
index 0000000..cfb44cc
--- /dev/null
+++ b/gcc5-pr64738.patch
@@ -0,0 +1,28 @@
+2015-01-23  Jakub Jelinek  <jakub at redhat.com>
+
+	PR go/64738
+	* Makefile.am (AM_LDFLAGS): Remove -static-libgo flag.
+	* Makefile.in: Regenerated.
+
+--- gotools/Makefile.am	2015-01-23 09:42:05.747471685 +0100
++++ gotools/Makefile.am	2015-01-23 21:04:36.970202637 +0100
+@@ -38,7 +38,7 @@ endif
+ GOCFLAGS = $(CFLAGS_FOR_TARGET)
+ GOCOMPILE = $(GOCOMPILER) $(GOCFLAGS)
+ 
+-AM_LDFLAGS = -L $(libgodir) -L $(libgodir)/.libs -static-libgo
++AM_LDFLAGS = -L $(libgodir) -L $(libgodir)/.libs
+ GOLINK = $(GOCOMPILER) $(AM_GOCFLAGS) $(LDFLAGS) $(AM_LDFLAGS) -o $@
+ 
+ cmdsrcdir = $(srcdir)/../libgo/go/cmd
+--- gotools/Makefile.in	2015-01-23 09:42:05.724472081 +0100
++++ gotools/Makefile.in	2015-01-23 21:04:44.940065201 +0100
+@@ -230,7 +230,7 @@ LIBGODEP = $(libgodir)/libgo.la
+ # Use the compiler we just built.
+ @NATIVE_TRUE at GOCOMPILER = $(GOC_FOR_TARGET)
+ GOCOMPILE = $(GOCOMPILER) $(GOCFLAGS)
+-AM_LDFLAGS = -L $(libgodir) -L $(libgodir)/.libs -static-libgo
++AM_LDFLAGS = -L $(libgodir) -L $(libgodir)/.libs
+ GOLINK = $(GOCOMPILER) $(AM_GOCFLAGS) $(LDFLAGS) $(AM_LDFLAGS) -o $@
+ cmdsrcdir = $(srcdir)/../libgo/go/cmd
+ go_cmd_go_files = \
diff --git a/gcc49-rh330771.patch b/gcc5-rh330771.patch
similarity index 100%
rename from gcc49-rh330771.patch
rename to gcc5-rh330771.patch
diff --git a/gcc49-sparc-config-detection.patch b/gcc5-sparc-config-detection.patch
similarity index 100%
rename from gcc49-sparc-config-detection.patch
rename to gcc5-sparc-config-detection.patch
diff --git a/sources b/sources
index b9c548b..db77005 100644
--- a/sources
+++ b/sources
@@ -1,3 +1 @@
-e34fca0540d840e5d0f6427e98c92252  cloog-0.18.1.tar.gz
-689887cca4a28c1385169bc5d3a14c77  gcc-4.9.2-20150107.tar.bz2
-e039bfcfb6c2ab039b8ee69bf883e824  isl-0.12.2.tar.bz2
+94860e75c4808cec7b783415064abee8  gcc-5.0.0-20150123.tar.bz2


More information about the scm-commits mailing list