From CLFS, by kb0iic

diff -Naur gcc-5.2.0.orig/gcc/config.in gcc-5.2.0/gcc/config.in
--- gcc-5.2.0.orig/gcc/config.in	2015-07-16 09:16:25.000000000 +0000
+++ gcc-5.2.0/gcc/config.in	2015-08-16 22:03:40.957436724 +0000
@@ -1313,6 +1313,12 @@
 #endif
 
 
+/* Define if isl_options_set_schedule_serialize_sccs exists. */
+#ifndef USED_FOR_TARGET
+#undef HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS
+#endif
+
+
 /* Define if isl_schedule_constraints_compute_schedule exists. */
 #ifndef USED_FOR_TARGET
 #undef HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE
diff -Naur gcc-5.2.0.orig/gcc/configure gcc-5.2.0/gcc/configure
--- gcc-5.2.0.orig/gcc/configure	2015-07-03 17:00:49.000000000 +0000
+++ gcc-5.2.0/gcc/configure	2015-08-16 22:03:40.967436000 +0000
@@ -28245,6 +28245,8 @@
 
 # Check whether isl_schedule_constraints_compute_schedule is available;
 # it's new in ISL-0.13.
+# Check whether isl_options_set_schedule_serialize_sccs is available;
+# it's new in ISL-0.15.
 if test "x${ISLLIBS}" != "x" ; then
   saved_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS $ISLINC"
@@ -28274,6 +28276,29 @@
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_has_isl_schedule_constraints_compute_schedule" >&5
 $as_echo "$ac_has_isl_schedule_constraints_compute_schedule" >&6; }
 
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking Checking for isl_options_set_schedule_serialize_sccs" >&5
+$as_echo_n "checking Checking for isl_options_set_schedule_serialize_sccs... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <isl/schedule.h>
+int
+main ()
+{
+isl_options_set_schedule_serialize_sccs (NULL, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_has_isl_options_set_schedule_serialize_sccs=yes
+else
+  ac_has_isl_options_set_schedule_serialize_sccs=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_has_isl_options_set_schedule_serialize_sccs" >&5
+$as_echo "$ac_has_isl_options_set_schedule_serialize_sccs" >&6; }
+
   LIBS="$saved_LIBS"
   CFLAGS="$saved_CFLAGS"
 
@@ -28282,6 +28307,12 @@
 $as_echo "#define HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE 1" >>confdefs.h
 
   fi
+
+  if test x"$ac_has_isl_options_set_schedule_serialize_sccs" = x"yes"; then
+
+$as_echo "#define HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS 1" >>confdefs.h
+
+  fi
 fi
 
 # Check for plugin support
diff -Naur gcc-5.2.0.orig/gcc/configure.ac gcc-5.2.0/gcc/configure.ac
--- gcc-5.2.0.orig/gcc/configure.ac	2015-07-03 17:00:49.000000000 +0000
+++ gcc-5.2.0/gcc/configure.ac	2015-08-16 22:03:40.970769092 +0000
@@ -5693,6 +5693,8 @@
 
 # Check whether isl_schedule_constraints_compute_schedule is available;
 # it's new in ISL-0.13.
+# Check whether isl_options_set_schedule_serialize_sccs is available;
+# it's new in ISL-0.15.
 if test "x${ISLLIBS}" != "x" ; then
   saved_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS $ISLINC"
@@ -5706,6 +5708,13 @@
               [ac_has_isl_schedule_constraints_compute_schedule=no])
   AC_MSG_RESULT($ac_has_isl_schedule_constraints_compute_schedule)
 
+  AC_MSG_CHECKING([Checking for isl_options_set_schedule_serialize_sccs])
+  AC_TRY_LINK([#include <isl/schedule.h>],
+              [isl_options_set_schedule_serialize_sccs (NULL, 0);],
+              [ac_has_isl_options_set_schedule_serialize_sccs=yes],
+              [ac_has_isl_options_set_schedule_serialize_sccs=no])
+  AC_MSG_RESULT($ac_has_isl_options_set_schedule_serialize_sccs)
+
   LIBS="$saved_LIBS"
   CFLAGS="$saved_CFLAGS"
 
@@ -5713,6 +5722,11 @@
      AC_DEFINE(HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE, 1,
                [Define if isl_schedule_constraints_compute_schedule exists.])
   fi
+
+  if test x"$ac_has_isl_options_set_schedule_serialize_sccs" = x"yes"; then
+     AC_DEFINE(HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS, 1,
+               [Define if isl_options_set_schedule_serialize_sccs exists.])
+  fi
 fi
 
 GCC_ENABLE_PLUGINS
diff -Naur gcc-5.2.0.orig/gcc/graphite-blocking.c gcc-5.2.0/gcc/graphite-blocking.c
--- gcc-5.2.0.orig/gcc/graphite-blocking.c	2015-01-09 20:18:42.000000000 +0000
+++ gcc-5.2.0/gcc/graphite-blocking.c	2015-08-16 22:05:22.430091176 +0000
@@ -24,6 +24,7 @@
 #include "config.h"
 
 #ifdef HAVE_isl
+#include <isl/constraint.h>
 #include <isl/set.h>
 #include <isl/map.h>
 #include <isl/union_map.h>
diff -Naur gcc-5.2.0.orig/gcc/graphite-dependences.c gcc-5.2.0/gcc/graphite-dependences.c
--- gcc-5.2.0.orig/gcc/graphite-dependences.c	2015-01-09 20:18:42.000000000 +0000
+++ gcc-5.2.0/gcc/graphite-dependences.c	2015-08-16 22:05:30.779486813 +0000
@@ -22,6 +22,7 @@
 #include "config.h"
 
 #ifdef HAVE_isl
+#include <isl/constraint.h>
 #include <isl/set.h>
 #include <isl/map.h>
 #include <isl/union_map.h>
@@ -227,7 +228,7 @@
 /* Helper function used on each MAP of a isl_union_map.  Computes the
    maximal output dimension.  */
 
-static int
+static isl_stat
 max_number_of_out_dimensions (__isl_take isl_map *map, void *user)
 {
   int global_max = *((int *) user);
@@ -239,7 +240,7 @@
 
   isl_map_free (map);
   isl_space_free (space);
-  return 0;
+  return isl_stat_ok;
 }
 
 /* Extends the output dimension of MAP to MAX dimensions.  */
@@ -263,12 +264,12 @@
 
 /* Helper function for extend_schedule.  */
 
-static int
+static isl_stat
 extend_schedule_1 (__isl_take isl_map *map, void *user)
 {
   struct extend_schedule_str *str = (struct extend_schedule_str *) user;
   str->umap = isl_union_map_add_map (str->umap, extend_map (map, str->max));
-  return 0;
+  return isl_stat_ok;
 }
 
 /* Return a relation that has uniform output dimensions.  */
@@ -277,16 +278,16 @@
 extend_schedule (__isl_take isl_union_map *x)
 {
   int max = 0;
-  int res;
+  isl_stat res;
   struct extend_schedule_str str;
 
   res = isl_union_map_foreach_map (x, max_number_of_out_dimensions, (void *) &max);
-  gcc_assert (res == 0);
+  gcc_assert (res == isl_stat_ok);
 
   str.max = max;
   str.umap = isl_union_map_empty (isl_union_map_get_space (x));
   res = isl_union_map_foreach_map (x, extend_schedule_1, (void *) &str);
-  gcc_assert (res == 0);
+  gcc_assert (res == isl_stat_ok);
 
   isl_union_map_free (x);
   return str.umap;
diff -Naur gcc-5.2.0.orig/gcc/graphite-interchange.c gcc-5.2.0/gcc/graphite-interchange.c
--- gcc-5.2.0.orig/gcc/graphite-interchange.c	2015-01-09 20:18:42.000000000 +0000
+++ gcc-5.2.0/gcc/graphite-interchange.c	2015-08-16 22:05:46.051714698 +0000
@@ -24,6 +24,7 @@
 #include "config.h"
 
 #ifdef HAVE_isl
+#include <isl/constraint.h>
 #include <isl/aff.h>
 #include <isl/set.h>
 #include <isl/map.h>
diff -Naur gcc-5.2.0.orig/gcc/graphite-isl-ast-to-gimple.c gcc-5.2.0/gcc/graphite-isl-ast-to-gimple.c
--- gcc-5.2.0.orig/gcc/graphite-isl-ast-to-gimple.c	2015-01-09 20:18:42.000000000 +0000
+++ gcc-5.2.0/gcc/graphite-isl-ast-to-gimple.c	2015-08-16 22:06:01.783909314 +0000
@@ -21,7 +21,9 @@
 #include "config.h"
 
 #ifdef HAVE_isl
+#include <isl/constraint.h>
 #include <isl/set.h>
+#include <isl/union_set.h>
 #include <isl/map.h>
 #include <isl/union_map.h>
 #include <isl/ast_build.h>
diff -Naur gcc-5.2.0.orig/gcc/graphite-optimize-isl.c gcc-5.2.0/gcc/graphite-optimize-isl.c
--- gcc-5.2.0.orig/gcc/graphite-optimize-isl.c	2015-01-09 20:18:42.000000000 +0000
+++ gcc-5.2.0/gcc/graphite-optimize-isl.c	2015-08-16 22:07:00.819636445 +0000
@@ -21,7 +21,9 @@
 #include "config.h"
 
 #ifdef HAVE_isl
+#include <isl/constraint.h>
 #include <isl/set.h>
+#include <isl/union_set.h>
 #include <isl/map.h>
 #include <isl/union_map.h>
 #include <isl/schedule.h>
@@ -530,13 +532,13 @@
   return ScheduleMap;
 }
 
-static int
+static isl_stat
 getSingleMap (__isl_take isl_map *map, void *user)
 {
   isl_map **singleMap = (isl_map **) user;
   *singleMap = map;
 
-  return 0;
+  return isl_stat_ok;
 }
 
 static void
@@ -608,7 +610,11 @@
 
   isl_options_set_schedule_max_constant_term (scop->ctx, CONSTANT_BOUND);
   isl_options_set_schedule_maximize_band_depth (scop->ctx, 1);
+#ifdef HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS
+  isl_options_set_schedule_serialize_sccs (scop->ctx, 1);
+#else
   isl_options_set_schedule_fuse (scop->ctx, ISL_SCHEDULE_FUSE_MIN);
+#endif
   isl_options_set_on_error (scop->ctx, ISL_ON_ERROR_CONTINUE);
 
 #ifdef HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE
diff -Naur gcc-5.2.0.orig/gcc/graphite-poly.c gcc-5.2.0/gcc/graphite-poly.c
--- gcc-5.2.0.orig/gcc/graphite-poly.c	2015-01-09 20:18:42.000000000 +0000
+++ gcc-5.2.0/gcc/graphite-poly.c	2015-08-16 22:07:17.621753733 +0000
@@ -22,6 +22,7 @@
 #include "config.h"
 
 #ifdef HAVE_isl
+#include <isl/constraint.h>
 #include <isl/set.h>
 #include <isl/map.h>
 #include <isl/union_map.h>
diff -Naur gcc-5.2.0.orig/gcc/graphite-poly.h gcc-5.2.0/gcc/graphite-poly.h
--- gcc-5.2.0.orig/gcc/graphite-poly.h	2015-01-05 12:33:28.000000000 +0000
+++ gcc-5.2.0/gcc/graphite-poly.h	2015-08-16 22:03:40.970769092 +0000
@@ -22,6 +22,11 @@
 #ifndef GCC_GRAPHITE_POLY_H
 #define GCC_GRAPHITE_POLY_H
 
+#ifndef HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS
+# define isl_stat int
+# define isl_stat_ok 0
+#endif
+
 typedef struct poly_dr *poly_dr_p;
 
 typedef struct poly_bb *poly_bb_p;
diff -Naur gcc-5.2.0.orig/gcc/graphite-scop-detection.c gcc-5.2.0/gcc/graphite-scop-detection.c
--- gcc-5.2.0.orig/gcc/graphite-scop-detection.c	2015-01-09 20:18:42.000000000 +0000
+++ gcc-5.2.0/gcc/graphite-scop-detection.c	2015-08-16 22:07:23.487995841 +0000
@@ -22,6 +22,7 @@
 #include "config.h"
 
 #ifdef HAVE_isl
+#include <isl/constraint.h>
 #include <isl/set.h>
 #include <isl/map.h>
 #include <isl/union_map.h>
diff -Naur gcc-5.2.0.orig/gcc/graphite-sese-to-poly.c gcc-5.2.0/gcc/graphite-sese-to-poly.c
--- gcc-5.2.0.orig/gcc/graphite-sese-to-poly.c	2015-01-15 13:28:42.000000000 +0000
+++ gcc-5.2.0/gcc/graphite-sese-to-poly.c	2015-08-16 22:07:31.617407497 +0000
@@ -21,6 +21,7 @@
 #include "config.h"
 
 #ifdef HAVE_isl
+#include <isl/constraint.h>
 #include <isl/set.h>
 #include <isl/map.h>
 #include <isl/union_map.h>
diff -Naur gcc-5.2.0.orig/gcc/graphite.c gcc-5.2.0/gcc/graphite.c
--- gcc-5.2.0.orig/gcc/graphite.c	2015-01-09 20:18:42.000000000 +0000
+++ gcc-5.2.0/gcc/graphite.c	2015-08-16 22:07:43.916517396 +0000
@@ -35,6 +35,7 @@
 #include "config.h"
 
 #ifdef HAVE_isl
+#include <isl/constraint.h>
 #include <isl/set.h>
 #include <isl/map.h>
 #include <isl/options.h>
