diff options
author | Tobias Burnus <burnus@net-b.de> | 2014-12-01 20:07:37 +0100 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2014-12-01 20:07:37 +0100 |
commit | 797d88589e5ccb5bf5c1143aa728e517387fa87a (patch) | |
tree | be3a2b7a117e5b375f803f3e1ae52c2afe3068f4 /gcc/graphite-optimize-isl.c | |
parent | 81ba15f10524cc46bf2afbe4fc07f783315c6d94 (diff) | |
download | gcc-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.c | 26 |
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) |