aboutsummaryrefslogtreecommitdiff
path: root/gcc/graphite-optimize-isl.c
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2014-12-01 20:07:37 +0100
committerTobias Burnus <burnus@gcc.gnu.org>2014-12-01 20:07:37 +0100
commit797d88589e5ccb5bf5c1143aa728e517387fa87a (patch)
treebe3a2b7a117e5b375f803f3e1ae52c2afe3068f4 /gcc/graphite-optimize-isl.c
parent81ba15f10524cc46bf2afbe4fc07f783315c6d94 (diff)
downloadgcc-797d88589e5ccb5bf5c1143aa728e517387fa87a.zip
gcc-797d88589e5ccb5bf5c1143aa728e517387fa87a.tar.gz
gcc-797d88589e5ccb5bf5c1143aa728e517387fa87a.tar.bz2
re PR middle-end/64017 (Support ISL 0.14.0 (to fix ICE with gfortran.dg/graphite/pr42393.f90))
2014-12-01 Tobias Burnus <burnus@net-b.de> Jack Howarth <howarth@bromo.med.uc.edu> PR middle-end/64017 * configure.ac * (ac_has_isl_schedule_constraints_compute_schedule): New check. * doc/install.texi (ISL): Permit ISL 0.14. * graphite-optimize-isl.c (getScheduleForBandList, * optimize_isl): Conditionally use ISL 0.13+ functions. * graphite-interchange.c: Make 'extern "C"' conditional. * graphite-isl-ast-to-gimple.c: Ditto. * graphite-poly.c: Ditto. * graphite-sese-to-poly.c: Ditto. * config.in: Regenerate. * gcc/configure: Regenerate. Co-Authored-By: Jack Howarth <howarth@bromo.med.uc.edu> From-SVN: r218247
Diffstat (limited to 'gcc/graphite-optimize-isl.c')
-rw-r--r--gcc/graphite-optimize-isl.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/gcc/graphite-optimize-isl.c b/gcc/graphite-optimize-isl.c
index 195101a..4cce700 100644
--- a/gcc/graphite-optimize-isl.c
+++ b/gcc/graphite-optimize-isl.c
@@ -460,7 +460,11 @@ getScheduleForBandList (isl_band_list *BandList, isl_union_map **map_sepcl)
if (flag_loop_unroll_jam && (i != (ScheduleDimensions - depth)))
continue;
+#ifdef HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE
+ if (isl_band_member_is_coincident (Band, i))
+#else
if (isl_band_member_is_zero_distance (Band, i))
+#endif
{
isl_map *TileMap;
isl_union_map *TileUMap;
@@ -564,6 +568,9 @@ optimize_isl (scop_p scop)
{
isl_schedule *schedule;
+#ifdef HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE
+ isl_schedule_constraints *schedule_constraints;
+#endif
isl_union_set *domain;
isl_union_map *validity, *proximity, *dependences;
isl_union_map *schedule_map;
@@ -579,11 +586,30 @@ optimize_isl (scop_p scop)
proximity = isl_union_map_copy (validity);
+#ifdef HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE
+ schedule_constraints = isl_schedule_constraints_on_domain (domain);
+ schedule_constraints
+ = isl_schedule_constraints_set_proximity (schedule_constraints,
+ proximity);
+ schedule_constraints
+ = isl_schedule_constraints_set_validity (schedule_constraints,
+ isl_union_map_copy (validity));
+ schedule_constraints
+ = isl_schedule_constraints_set_coincidence (schedule_constraints,
+ validity);
+#endif
+
isl_options_set_schedule_max_constant_term (scop->ctx, CONSTANT_BOUND);
isl_options_set_schedule_maximize_band_depth (scop->ctx, 1);
isl_options_set_schedule_fuse (scop->ctx, ISL_SCHEDULE_FUSE_MIN);
isl_options_set_on_error (scop->ctx, ISL_ON_ERROR_CONTINUE);
+
+#ifdef HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE
+ schedule = isl_schedule_constraints_compute_schedule(schedule_constraints);
+#else
schedule = isl_union_set_compute_schedule (domain, validity, proximity);
+#endif
+
isl_options_set_on_error (scop->ctx, ISL_ON_ERROR_ABORT);
if (!schedule)