diff options
author | Sebastian Pop <sebastian.pop@amd.com> | 2009-11-25 04:57:45 +0000 |
---|---|---|
committer | Sebastian Pop <spop@gcc.gnu.org> | 2009-11-25 04:57:45 +0000 |
commit | a0517b76ddeb6fdbc4346a508e98ac842b539694 (patch) | |
tree | b88b198244b1d334d7ccde496eff481bce835ec2 /gcc/graphite-poly.h | |
parent | 9d0778350be2a1fbb2cded2f4e7a8586c80d4780 (diff) | |
download | gcc-a0517b76ddeb6fdbc4346a508e98ac842b539694.tar.gz |
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.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/gcc/graphite-poly.h b/gcc/graphite-poly.h index ab6dbbb0ae1..f059834b072 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 |