From bfac3fa266e950ed414c0dc704b9c43f8f4c4ff1 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Tue, 7 Aug 2018 12:09:42 +0200 Subject: [PATCH] isl_schedule_node_get_schedule_depth: return isl_size This clarifies what the possible return values are. Signed-off-by: Sven Verdoolaege --- doc/user.pod | 2 +- include/isl/schedule_node.h | 3 ++- isl_flow.c | 8 +++++--- isl_schedule_node.c | 29 ++++++++++++++++------------- 4 files changed, 24 insertions(+), 18 deletions(-) diff --git a/doc/user.pod b/doc/user.pod index de77576a..0e20837e 100644 --- a/doc/user.pod +++ b/doc/user.pod @@ -8957,7 +8957,7 @@ of C can be obtained using the following function. #include - int isl_schedule_node_get_schedule_depth( + isl_size isl_schedule_node_get_schedule_depth( __isl_keep isl_schedule_node *node); The following functions return the elements that reach the given node diff --git a/include/isl/schedule_node.h b/include/isl/schedule_node.h index b806c8c8..c44ad5a7 100644 --- a/include/isl/schedule_node.h +++ b/include/isl/schedule_node.h @@ -166,7 +166,8 @@ __isl_give isl_set *isl_schedule_node_guard_get_guard( __isl_give isl_id *isl_schedule_node_mark_get_id( __isl_keep isl_schedule_node *node); -int isl_schedule_node_get_schedule_depth(__isl_keep isl_schedule_node *node); +isl_size isl_schedule_node_get_schedule_depth( + __isl_keep isl_schedule_node *node); __isl_give isl_union_set *isl_schedule_node_get_domain( __isl_keep isl_schedule_node *node); __isl_give isl_union_set *isl_schedule_node_get_universe_domain( diff --git a/isl_flow.c b/isl_flow.c index a29934c1..e996f52d 100644 --- a/isl_flow.c +++ b/isl_flow.c @@ -2975,14 +2975,16 @@ static int before_node(void *first, void *second) isl_schedule_node *node1 = first; isl_schedule_node *node2 = second; isl_schedule_node *shared; - int depth; + isl_size depth; int before = 0; shared = isl_schedule_node_get_shared_ancestor(node1, node2); - if (!shared) + depth = isl_schedule_node_get_schedule_depth(shared); + if (depth < 0) { + isl_schedule_node_free(shared); return -1; + } - depth = isl_schedule_node_get_schedule_depth(shared); if (isl_schedule_node_get_type(shared) == isl_schedule_node_sequence) { isl_size pos1, pos2; diff --git a/isl_schedule_node.c b/isl_schedule_node.c index 6829706e..0453cceb 100644 --- a/isl_schedule_node.c +++ b/isl_schedule_node.c @@ -274,20 +274,21 @@ isl_bool isl_schedule_node_is_equal(__isl_keep isl_schedule_node *node1, /* Return the number of outer schedule dimensions of "node" * in its schedule tree. * - * Return -1 on error. + * Return isl_size_error on error. */ -int isl_schedule_node_get_schedule_depth(__isl_keep isl_schedule_node *node) +isl_size isl_schedule_node_get_schedule_depth( + __isl_keep isl_schedule_node *node) { int i; isl_size n; int depth = 0; if (!node) - return -1; + return isl_size_error; n = isl_schedule_tree_list_n_schedule_tree(node->ancestors); if (n < 0) - return -1; + return isl_size_error; for (i = n - 1; i >= 0; --i) { isl_schedule_tree *tree; isl_size n; @@ -295,14 +296,14 @@ int isl_schedule_node_get_schedule_depth(__isl_keep isl_schedule_node *node) tree = isl_schedule_tree_list_get_schedule_tree( node->ancestors, i); if (!tree) - return -1; + return isl_size_error; n = 0; if (tree->type == isl_schedule_node_band) n = isl_schedule_tree_band_n_member(tree); depth += n; isl_schedule_tree_free(tree); if (n < 0) - return -1; + return isl_size_error; } return depth; @@ -1783,12 +1784,12 @@ error: __isl_give isl_set *isl_schedule_node_band_get_ast_isolate_option( __isl_keep isl_schedule_node *node) { - int depth; + isl_size depth; - if (!node) + depth = isl_schedule_node_get_schedule_depth(node); + if (depth < 0) return NULL; - depth = isl_schedule_node_get_schedule_depth(node); return isl_schedule_tree_band_get_ast_isolate_option(node->tree, depth); } @@ -2077,10 +2078,12 @@ __isl_give isl_schedule_node *isl_schedule_node_band_sink( __isl_give isl_schedule_node *isl_schedule_node_band_split( __isl_take isl_schedule_node *node, int pos) { - int depth; + isl_size depth; isl_schedule_tree *tree; depth = isl_schedule_node_get_schedule_depth(node); + if (depth < 0) + return isl_schedule_node_free(node); tree = isl_schedule_node_get_tree(node); tree = isl_schedule_tree_band_split(tree, pos, depth); return isl_schedule_node_graft_tree(node, tree); @@ -4396,21 +4399,21 @@ static __isl_give isl_schedule_node *extension_from_domain( isl_union_set *universe; isl_union_set *domain; isl_union_map *ext; - int depth; + isl_size depth; isl_bool anchored; isl_space *space; isl_schedule_node *res; isl_schedule_tree *tree; + depth = isl_schedule_node_get_schedule_depth(pos); anchored = isl_schedule_node_is_subtree_anchored(node); - if (anchored < 0) + if (depth < 0 || anchored < 0) return isl_schedule_node_free(node); if (anchored) isl_die(isl_schedule_node_get_ctx(node), isl_error_unsupported, "cannot graft anchored tree with domain root", return isl_schedule_node_free(node)); - depth = isl_schedule_node_get_schedule_depth(pos); domain = isl_schedule_node_domain_get_domain(node); space = isl_union_set_get_space(domain); space = isl_space_set_from_params(space); -- 2.11.4.GIT