summaryrefslogtreecommitdiff
path: root/gcc/graphite-optimize-isl.c
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2017-09-25 09:48:31 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2017-09-25 09:48:31 +0000
commita1db6b7f7a27f1b5e97d5bb64cead3ee8ed29e7d (patch)
tree03aab835117a5662f821e9bed7cfa704fbe66ed6 /gcc/graphite-optimize-isl.c
parent0d6c88477501919bcdec8f486b9ca1bb5fe44688 (diff)
downloadgcc-a1db6b7f7a27f1b5e97d5bb64cead3ee8ed29e7d.tar.gz
2017-09-25 Richard Biener <rguenther@suse.de>
* graphite-optimize-isl.c (optimize_isl): Fail and dump if ISL errors other than isl_error_quota happen. Dump if the schedule is the same. * graphite-sese-to-poly.c (build_poly_scop): Fail on ISL errors instead of aborting inside ISL. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@253142 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/graphite-optimize-isl.c')
-rw-r--r--gcc/graphite-optimize-isl.c28
1 files changed, 17 insertions, 11 deletions
diff --git a/gcc/graphite-optimize-isl.c b/gcc/graphite-optimize-isl.c
index ef41e55e173..dbf10ead1ca 100644
--- a/gcc/graphite-optimize-isl.c
+++ b/gcc/graphite-optimize-isl.c
@@ -111,6 +111,7 @@ scop_get_domains (scop_p scop)
static bool
optimize_isl (scop_p scop)
{
+ int old_err = isl_options_get_on_error (scop->isl_context);
int old_max_operations = isl_ctx_get_max_operations (scop->isl_context);
int max_operations = PARAM_VALUE (PARAM_MAX_ISL_OPERATIONS);
if (max_operations)
@@ -150,19 +151,23 @@ optimize_isl (scop_p scop)
scop->transformed_schedule =
isl_schedule_map_schedule_node_bottom_up (scop->transformed_schedule,
get_schedule_for_node_st, NULL);
- isl_options_set_on_error (scop->isl_context, ISL_ON_ERROR_ABORT);
+ isl_options_set_on_error (scop->isl_context, old_err);
isl_ctx_reset_operations (scop->isl_context);
isl_ctx_set_max_operations (scop->isl_context, old_max_operations);
if (!scop->transformed_schedule
- || isl_ctx_last_error (scop->isl_context) == isl_error_quota)
+ || isl_ctx_last_error (scop->isl_context) != isl_error_none)
{
location_t loc = find_loop_location
(scop->scop_info->region.entry->dest->loop_father);
- dump_printf_loc (MSG_MISSED_OPTIMIZATION, loc,
- "loop nest not optimized, optimization timed out "
- "after %d operations [--param max-isl-operations]\n",
- max_operations);
+ if (isl_ctx_last_error (scop->isl_context) == isl_error_quota)
+ dump_printf_loc (MSG_MISSED_OPTIMIZATION, loc,
+ "loop nest not optimized, optimization timed out "
+ "after %d operations [--param max-isl-operations]\n",
+ max_operations);
+ else
+ dump_printf_loc (MSG_MISSED_OPTIMIZATION, loc,
+ "loop nest not optimized, ISL signalled an error\n");
return false;
}
@@ -175,12 +180,13 @@ optimize_isl (scop_p scop)
if (same_schedule)
{
+ location_t loc = find_loop_location
+ (scop->scop_info->region.entry->dest->loop_father);
+ dump_printf_loc (MSG_NOTE, loc,
+ "loop nest not optimized, optimized schedule is "
+ "identical to original schedule\n");
if (dump_file)
- {
- fprintf (dump_file, "[scheduler] isl optimized schedule is "
- "identical to the original schedule.\n");
- print_schedule_ast (dump_file, scop->original_schedule, scop);
- }
+ print_schedule_ast (dump_file, scop->original_schedule, scop);
isl_schedule_free (scop->transformed_schedule);
scop->transformed_schedule = isl_schedule_copy (scop->original_schedule);
return false;