Commit 797d8858 by Tobias Burnus Committed by Tobias Burnus

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
parent 81ba15f1
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.
2014-12-01 Segher Boessenkool <segher@kernel.crashing.org>
* combine.c (distribute_links): Handle multiple SETs.
......@@ -1295,6 +1295,12 @@
#endif
/* Define if isl_schedule_constraints_compute_schedule exists. */
#ifndef USED_FOR_TARGET
#undef HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE
#endif
/* Define to 1 if you have the `kill' function. */
#ifndef USED_FOR_TARGET
#undef HAVE_KILL
......
......@@ -28057,6 +28057,47 @@ $as_echo "#define HAVE_isl 1" >>confdefs.h
fi
# Check whether isl_schedule_constraints_compute_schedule is available;
# it's new in ISL-0.13.
if test "x${ISLLIBS}" != "x" ; then
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $ISLINC"
saved_LIBS="$LIBS"
LIBS="$LIBS $ISLLIBS $GMPLIBS"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Checking for isl_schedule_constraints_compute_schedule" >&5
$as_echo_n "checking Checking for isl_schedule_constraints_compute_schedule... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <isl/schedule.h>
int
main ()
{
isl_schedule_constraints_compute_schedule (NULL);
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_has_isl_schedule_constraints_compute_schedule=yes
else
ac_has_isl_schedule_constraints_compute_schedule=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_schedule_constraints_compute_schedule" >&5
$as_echo "$ac_has_isl_schedule_constraints_compute_schedule" >&6; }
LIBS="$saved_LIBS"
CFLAGS="$saved_CFLAGS"
if test x"$ac_has_isl_schedule_constraints_compute_schedule" = x"yes"; then
$as_echo "#define HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE 1" >>confdefs.h
fi
fi
# Check for plugin support
# Check whether --enable-plugin was given.
if test "${enable_plugin+set}" = set; then :
......
......@@ -5601,6 +5601,30 @@ if test "x${ISLLIBS}" != "x" ; then
AC_DEFINE(HAVE_isl, 1, [Define if isl is in use.])
fi
# Check whether isl_schedule_constraints_compute_schedule is available;
# it's new in ISL-0.13.
if test "x${ISLLIBS}" != "x" ; then
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $ISLINC"
saved_LIBS="$LIBS"
LIBS="$LIBS $ISLLIBS $GMPLIBS"
AC_MSG_CHECKING([Checking for isl_schedule_constraints_compute_schedule])
AC_TRY_LINK([#include <isl/schedule.h>],
[isl_schedule_constraints_compute_schedule (NULL);],
[ac_has_isl_schedule_constraints_compute_schedule=yes],
[ac_has_isl_schedule_constraints_compute_schedule=no])
AC_MSG_RESULT($ac_has_isl_schedule_constraints_compute_schedule)
LIBS="$saved_LIBS"
CFLAGS="$saved_CFLAGS"
if test x"$ac_has_isl_schedule_constraints_compute_schedule" = x"yes"; then
AC_DEFINE(HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE, 1,
[Define if isl_schedule_constraints_compute_schedule exists.])
fi
fi
GCC_ENABLE_PLUGINS
AC_SUBST(pluginlibs)
AC_SUBST(enable_plugin)
......
......@@ -383,7 +383,7 @@ installed but it is not in your default library search path, the
@option{--with-mpc} configure option should be used. See also
@option{--with-mpc-lib} and @option{--with-mpc-include}.
@item ISL Library version 0.12.2
@item ISL Library version 0.14 (or 0.12.2)
Necessary to build GCC with the Graphite loop optimizations.
It can be downloaded from @uref{ftp://gcc.gnu.org/pub/gcc/infrastructure/}
......
......@@ -30,11 +30,13 @@ along with GCC; see the file COPYING3. If not see
#include <isl/union_map.h>
#include <isl/ilp.h>
#include <isl/val.h>
#if defined(__cplusplus)
/* Since ISL-0.13, the extern is in val_gmp.h. */
#if !defined(HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE) && defined(__cplusplus)
extern "C" {
#endif
#include <isl/val_gmp.h>
#if defined(__cplusplus)
#if !defined(HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE) && defined(__cplusplus)
}
#endif
#endif
......
......@@ -25,11 +25,13 @@ along with GCC; see the file COPYING3. If not see
#include <isl/map.h>
#include <isl/union_map.h>
#include <isl/ast_build.h>
#if defined(__cplusplus)
/* Since ISL-0.13, the extern is in val_gmp.h. */
#if !defined(HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE) && defined(__cplusplus)
extern "C" {
#endif
#include <isl/val_gmp.h>
#if defined(__cplusplus)
#if !defined(HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE) && defined(__cplusplus)
}
#endif
#endif
......
......@@ -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)
......
......@@ -29,11 +29,13 @@ along with GCC; see the file COPYING3. If not see
#include <isl/ilp.h>
#include <isl/aff.h>
#include <isl/val.h>
#if defined(__cplusplus)
/* Since ISL-0.13, the extern is in val_gmp.h. */
#if !defined(HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE) && defined(__cplusplus)
extern "C" {
#endif
#include <isl/val_gmp.h>
#if defined(__cplusplus)
#if !defined(HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE) && defined(__cplusplus)
}
#endif
#endif
......
......@@ -27,15 +27,13 @@ along with GCC; see the file COPYING3. If not see
#include <isl/constraint.h>
#include <isl/aff.h>
#include <isl/val.h>
/* For C++ linkage of C functions.
Missing from isl/val_gmp.h in isl 0.12 versions.
Appearing in isl/val_gmp.h in isl 0.13.
To be removed when passing to isl 0.13. */
#if defined(__cplusplus)
/* Since ISL-0.13, the extern is in val_gmp.h. */
#if !defined(HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE) && defined(__cplusplus)
extern "C" {
#endif
#include <isl/val_gmp.h>
#if defined(__cplusplus)
#if !defined(HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE) && defined(__cplusplus)
}
#endif
#endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment