diff options
Diffstat (limited to 'gcc/graphite-sese-to-poly.c')
-rw-r--r-- | gcc/graphite-sese-to-poly.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/gcc/graphite-sese-to-poly.c b/gcc/graphite-sese-to-poly.c index 23b63ad1f5e..a38f2a1b0b7 100644 --- a/gcc/graphite-sese-to-poly.c +++ b/gcc/graphite-sese-to-poly.c @@ -40,6 +40,7 @@ extern "C" { #include "system.h" #include "coretypes.h" +#include "bitvec.h" #include "hash-set.h" #include "machmode.h" #include "vec.h" @@ -373,13 +374,13 @@ try_generate_gimple_bb (scop_p scop, basic_block bb) be handled after BB. */ static bool -all_non_dominated_preds_marked_p (basic_block bb, sbitmap map) +all_non_dominated_preds_marked_p (basic_block bb, const bitvec *map) { edge e; edge_iterator ei; FOR_EACH_EDGE (e, ei, bb->preds) - if (!bitmap_bit_p (map, e->src->index) + if (!(*map)[e->src->index] && !dominated_by_p (CDI_DOMINATORS, e->src, bb)) return false; @@ -417,19 +418,19 @@ graphite_sort_dominated_info (vec<basic_block> dom) /* Recursive helper function for build_scops_bbs. */ static void -build_scop_bbs_1 (scop_p scop, sbitmap visited, basic_block bb) +build_scop_bbs_1 (scop_p scop, bitvec *visited, basic_block bb) { sese region = SCOP_REGION (scop); vec<basic_block> dom; poly_bb_p pbb; - if (bitmap_bit_p (visited, bb->index) + if ((*visited)[bb->index] || !bb_in_sese_p (bb, region)) return; pbb = new_poly_bb (scop, try_generate_gimple_bb (scop, bb)); SCOP_BBS (scop).safe_push (pbb); - bitmap_set_bit (visited, bb->index); + (*visited)[bb->index] = true; dom = get_dominated_by (CDI_DOMINATORS, bb); @@ -460,12 +461,10 @@ build_scop_bbs_1 (scop_p scop, sbitmap visited, basic_block bb) static void build_scop_bbs (scop_p scop) { - sbitmap visited = sbitmap_alloc (last_basic_block_for_fn (cfun)); + stack_bitvec visited (last_basic_block_for_fn (cfun)); sese region = SCOP_REGION (scop); - bitmap_clear (visited); - build_scop_bbs_1 (scop, visited, SESE_ENTRY_BB (region)); - sbitmap_free (visited); + build_scop_bbs_1 (scop, &visited, SESE_ENTRY_BB (region)); } /* Return an ISL identifier for the polyhedral basic block PBB. */ |