From 4009cb51dc12e8a2ad187fc2a44bc425385d3fbf Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Fri, 21 Nov 2014 16:31:58 +0100 Subject: [PATCH] add isl_schedule_node_root Signed-off-by: Sven Verdoolaege --- doc/user.pod | 2 ++ include/isl/schedule_node.h | 2 ++ isl_schedule_node.c | 15 +++++++++++++++ 3 files changed, 19 insertions(+) diff --git a/doc/user.pod b/doc/user.pod index a9d76847..4d938bd6 100644 --- a/doc/user.pod +++ b/doc/user.pod @@ -7430,6 +7430,8 @@ exists. __isl_keep isl_schedule_node *node); __isl_give isl_schedule_node *isl_schedule_node_parent( __isl_take isl_schedule_node *node); + __isl_give isl_schedule_node *isl_schedule_node_root( + __isl_take isl_schedule_node *node); __isl_give isl_schedule_node *isl_schedule_node_ancestor( __isl_take isl_schedule_node *node, int generation); diff --git a/include/isl/schedule_node.h b/include/isl/schedule_node.h index 7c9d2f36..89a1f0b0 100644 --- a/include/isl/schedule_node.h +++ b/include/isl/schedule_node.h @@ -46,6 +46,8 @@ int isl_schedule_node_get_child_position(__isl_keep isl_schedule_node *node); __isl_give isl_schedule_node *isl_schedule_node_get_child( __isl_keep isl_schedule_node *node, int pos); +__isl_give isl_schedule_node *isl_schedule_node_root( + __isl_take isl_schedule_node *node); __isl_give isl_schedule_node *isl_schedule_node_parent( __isl_take isl_schedule_node *node); __isl_give isl_schedule_node *isl_schedule_node_ancestor( diff --git a/isl_schedule_node.c b/isl_schedule_node.c index b769e466..04445228 100644 --- a/isl_schedule_node.c +++ b/isl_schedule_node.c @@ -728,6 +728,21 @@ __isl_give isl_schedule_node *isl_schedule_node_parent( return isl_schedule_node_ancestor(node, 1); } +/* Move the "node" pointer to the root of its schedule tree. + */ +__isl_give isl_schedule_node *isl_schedule_node_root( + __isl_take isl_schedule_node *node) +{ + int n; + + if (!node) + return NULL; + n = isl_schedule_node_get_tree_depth(node); + if (n < 0) + return isl_schedule_node_free(node); + return isl_schedule_node_ancestor(node, n); +} + /* Move the "node" pointer to the child at position "pos" of the node * it currently points to. */ -- 2.11.4.GIT