aboutsummaryrefslogtreecommitdiff
path: root/gcc/graphite-poly.h
diff options
context:
space:
mode:
authorSebastian Pop <sebastian.pop@amd.com>2009-11-25 04:57:45 +0000
committerSebastian Pop <spop@gcc.gnu.org>2009-11-25 04:57:45 +0000
commita0517b76ddeb6fdbc4346a508e98ac842b539694 (patch)
treeb88b198244b1d334d7ccde496eff481bce835ec2 /gcc/graphite-poly.h
parent9d0778350be2a1fbb2cded2f4e7a8586c80d4780 (diff)
downloadgcc-a0517b76ddeb6fdbc4346a508e98ac842b539694.zip
gcc-a0517b76ddeb6fdbc4346a508e98ac842b539694.tar.gz
gcc-a0517b76ddeb6fdbc4346a508e98ac842b539694.tar.bz2
graphite-poly.h (lst_find_pbb): New.
2009-10-09 Sebastian Pop <sebastian.pop@amd.com> * graphite-poly.h (lst_find_pbb): New. (find_lst_loop): New. From-SVN: r154568
Diffstat (limited to 'gcc/graphite-poly.h')
-rw-r--r--gcc/graphite-poly.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/gcc/graphite-poly.h b/gcc/graphite-poly.h
index ab6dbbb..f059834 100644
--- a/gcc/graphite-poly.h
+++ b/gcc/graphite-poly.h
@@ -724,6 +724,47 @@ lst_dewey_number (lst_p lst)
return -1;
}
+/* Return the LST node corresponding to PBB. */
+
+static inline lst_p
+lst_find_pbb (lst_p lst, poly_bb_p pbb)
+{
+ int i;
+ lst_p l;
+
+ if (!lst)
+ return NULL;
+
+ if (LST_LOOP_P (lst))
+ for (i = 0; VEC_iterate (lst_p, LST_SEQ (lst), i, l); i++)
+ {
+ lst_p res = lst_find_pbb (l, pbb);
+ if (res)
+ return res;
+ }
+ else if (pbb == LST_PBB (lst))
+ return lst;
+
+ return NULL;
+}
+
+/* Return the LST node corresponding to the loop around STMT at depth
+ LOOP_DEPTH. */
+
+static inline lst_p
+find_lst_loop (lst_p stmt, int loop_depth)
+{
+ lst_p loop = LST_LOOP_FATHER (stmt);
+
+ gcc_assert (loop_depth >= 0);
+
+ while (loop_depth < lst_depth (loop))
+ loop = LST_LOOP_FATHER (loop);
+
+ return loop;
+}
+
+
/* A SCOP is a Static Control Part of the program, simple enough to be
represented in polyhedral form. */
struct scop