[polly] r309039 - Revert accidental isl changes in 308923

Tobias Grosser via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 25 15:15:47 PDT 2017


Author: grosser
Date: Tue Jul 25 15:15:47 2017
New Revision: 309039

URL: http://llvm.org/viewvc/llvm-project?rev=309039&view=rev
Log:
Revert accidental isl changes in 308923

It seems I still had some incomplete changes in the tree when committing.
In general, we only import changes from isl upstream. In this case, the
changes were especially unfortunate, as they broke the error management
in isl_flow.c and consequently caused regressions.

Thanks to Michael Kruse for spotting this mistake.

Modified:
    polly/trunk/lib/External/isl/isl_flow.c

Modified: polly/trunk/lib/External/isl/isl_flow.c
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/isl_flow.c?rev=309039&r1=309038&r2=309039&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/isl_flow.c (original)
+++ polly/trunk/lib/External/isl/isl_flow.c Tue Jul 25 15:15:47 2017
@@ -311,13 +311,6 @@ error:
 	return NULL;
 }
 
-/* A helper struct carrying the isl_access_info and an error condition.
- */
-struct access_sort_info {
-	isl_access_info *access_info;
-	int error;
-};
-
 /* Return -n, 0 or n (with n a positive value), depending on whether
  * the source access identified by p1 should be sorted before, together
  * or after that identified by p2.
@@ -330,18 +323,10 @@ struct access_sort_info {
  * If not, we try to order the two statements based on the description
  * of the iteration domains.  This results in an arbitrary, but fairly
  * stable ordering.
- *
- * In case of an error, sort_info.error is set to true and all elements are
- * reported to be equal.
  */
 static int access_sort_cmp(const void *p1, const void *p2, void *user)
 {
-	struct access_sort_info *sort_info = user;
-	isl_access_info *acc = sort_info->access_info;
-
-	if (sort_info->error)
-		return 0;
-
+	isl_access_info *acc = user;
 	const struct isl_labeled_map *i1, *i2;
 	int level1, level2;
 	uint32_t h1, h2;
@@ -349,25 +334,16 @@ static int access_sort_cmp(const void *p
 	i2 = (const struct isl_labeled_map *) p2;
 
 	level1 = acc->level_before(i1->data, i2->data);
-	if (level1 < 0)
-		goto error;
 	if (level1 % 2)
 		return -1;
 
 	level2 = acc->level_before(i2->data, i1->data);
-	if (level2 < 0)
-		goto error;
 	if (level2 % 2)
 		return 1;
 
 	h1 = isl_map_get_hash(i1->map);
 	h2 = isl_map_get_hash(i2->map);
 	return h1 > h2 ? 1 : h1 < h2 ? -1 : 0;
-
-error:
-	sort_info->error = 1;
-	return 0;
-
 }
 
 /* Sort the must source accesses in their textual order.
@@ -375,21 +351,13 @@ error:
 static __isl_give isl_access_info *isl_access_info_sort_sources(
 	__isl_take isl_access_info *acc)
 {
-	struct access_sort_info sort_info;
-
-	sort_info.access_info = acc;
-	sort_info.error = 0;
-
 	if (!acc)
 		return NULL;
 	if (acc->n_must <= 1)
 		return acc;
 
 	if (isl_sort(acc->source, acc->n_must, sizeof(struct isl_labeled_map),
-		    access_sort_cmp, &sort_info) < 0)
-		return isl_access_info_free(acc);
-
-	if (sort_info.error)
+		    access_sort_cmp, acc) < 0)
 		return isl_access_info_free(acc);
 
 	return acc;
@@ -722,9 +690,6 @@ static int can_precede_at_level(int shar
  *
  * If temp_rel[j] is empty, then there can be no improvement and
  * we return immediately.
- *
- * This function returns 0 in case it was executed successfully and
- * -1 in case of errors during the execution of this function.
  */
 static int intermediate_sources(__isl_keep isl_access_info *acc,
 	struct isl_map **temp_rel, int j, int sink_level)
@@ -738,16 +703,11 @@ static int intermediate_sources(__isl_ke
 	for (k = j - 1; k >= 0; --k) {
 		int plevel, plevel2;
 		plevel = acc->level_before(acc->source[k].data, acc->sink.data);
-		if (plevel < 0)
-			return -1;
-
 		if (!can_precede_at_level(plevel, sink_level))
 			continue;
 
 		plevel2 = acc->level_before(acc->source[j].data,
 						acc->source[k].data);
-		if (plevel2 < 0)
-			return -1;
 
 		for (level = sink_level; level <= depth; ++level) {
 			struct isl_map *T;
@@ -856,8 +816,6 @@ static __isl_give isl_map *all_intermedi
 
 		plevel = acc->level_before(acc->source[k].data,
 					acc->source[acc->n_must + j].data);
-		if (plevel < 0)
-			return isl_map_free(map);
 
 		for (level = sink_level; level <= depth; ++level) {
 			isl_map *T;
@@ -906,14 +864,10 @@ static __isl_give isl_map *all_intermedi
  * uncurried to [T -> S] -> K.
  * This result is then intersected with the dependence relation S -> K
  * to form the output.
- *
- * In case a negative depth is given, NULL is returned.
  */
 static __isl_give isl_map *coscheduled_source(__isl_keep isl_access_info *acc,
 	__isl_keep isl_map *old_map, int pos, int depth)
 {
-	if (depth < 0)
-		return NULL;
 	isl_space *space;
 	isl_set *set_C;
 	isl_map *read_map;
@@ -1055,9 +1009,6 @@ static __isl_give isl_flow *compute_mem_
 		isl_map *dep;
 
 		plevel = acc->level_before(acc->source[i].data, acc->sink.data);
-		if (plevel < 0)
-			goto error;
-
 		is_before = plevel & 1;
 		plevel >>= 1;
 
@@ -1078,11 +1029,6 @@ static __isl_give isl_flow *compute_mem_
 	res->must_no_source = mustdo;
 
 	return res;
-error:
-	isl_set_free(mustdo);
-	isl_set_free(maydo);
-	isl_flow_free(res);
-	return NULL;
 }
 
 /* Compute dependences for the case where there is at least one
@@ -1173,9 +1119,6 @@ static __isl_give isl_flow *compute_val_
 
 			plevel = acc->level_before(acc->source[j].data,
 						     acc->sink.data);
-			if (plevel < 0)
-				goto error;
-
 			if (!can_precede_at_level(plevel, level))
 				continue;
 
@@ -1183,15 +1126,13 @@ static __isl_give isl_flow *compute_val_
 			must_rel[j] = isl_map_union_disjoint(must_rel[j], T);
 			mustdo = rest;
 
-			if (intermediate_sources(acc, must_rel, j, level))
-				goto error;
+			intermediate_sources(acc, must_rel, j, level);
 
 			T = last_source(acc, maydo, j, level, &rest);
 			may_rel[j] = isl_map_union_disjoint(may_rel[j], T);
 			maydo = rest;
 
-			if (intermediate_sources(acc, may_rel, j, level))
-				goto error;
+			intermediate_sources(acc, may_rel, j, level);
 
 			if (isl_set_plain_is_empty(mustdo) &&
 			    isl_set_plain_is_empty(maydo))
@@ -1202,15 +1143,11 @@ static __isl_give isl_flow *compute_val_
 
 			plevel = acc->level_before(acc->source[j].data,
 						     acc->sink.data);
-			if (plevel < 0)
-				goto error;
 			if (!can_precede_at_level(plevel, level))
 				continue;
 
-			if (intermediate_sources(acc, must_rel, j, level))
-				goto error;
-			if (intermediate_sources(acc, may_rel, j, level))
-				goto error;
+			intermediate_sources(acc, must_rel, j, level);
+			intermediate_sources(acc, may_rel, j, level);
 		}
 
 		handle_coscheduled(acc, must_rel, may_rel, res);
@@ -1222,8 +1159,6 @@ static __isl_give isl_flow *compute_val_
 
 			plevel = acc->level_before(acc->source[acc->n_must + j].data,
 						     acc->sink.data);
-			if (plevel < 0)
-				goto error;
 			if (!can_precede_at_level(plevel, level))
 				continue;
 




More information about the llvm-commits mailing list