diff options
Diffstat (limited to 'gcc/sese.c')
-rw-r--r-- | gcc/sese.c | 92 |
1 files changed, 38 insertions, 54 deletions
diff --git a/gcc/sese.c b/gcc/sese.c index 59d2770f6f5..08ea47d010d 100644 --- a/gcc/sese.c +++ b/gcc/sese.c @@ -43,56 +43,6 @@ along with GCC; see the file COPYING3. If not see #include "sese.h" #include "tree-ssa-propagate.h" -/* Record LOOP as occurring in REGION. */ - -static void -sese_record_loop (sese_info_p region, loop_p loop) -{ - if (sese_contains_loop (region, loop)) - return; - - bitmap_set_bit (region->loops, loop->num); - region->loop_nest.safe_push (loop); -} - -/* Build the loop nests contained in REGION. Returns true when the - operation was successful. */ - -void -build_sese_loop_nests (sese_info_p region) -{ - unsigned i; - basic_block bb; - struct loop *loop0, *loop1; - - FOR_EACH_BB_FN (bb, cfun) - if (bb_in_sese_p (bb, region->region)) - { - struct loop *loop = bb->loop_father; - - /* Only add loops if they are completely contained in the SCoP. */ - if (loop->header == bb - && bb_in_sese_p (loop->latch, region->region)) - sese_record_loop (region, loop); - } - - /* Make sure that the loops in the SESE_LOOP_NEST are ordered. It - can be the case that an inner loop is inserted before an outer - loop. To avoid this, semi-sort once. */ - FOR_EACH_VEC_ELT (region->loop_nest, i, loop0) - { - if (region->loop_nest.length () == i + 1) - break; - - loop1 = region->loop_nest[i + 1]; - if (loop0->num > loop1->num) - { - region->loop_nest[i] = loop1; - region->loop_nest[i + 1] = loop0; - } - } -} - /* For a USE in BB, if BB is outside REGION, mark the USE in the LIVEOUTS set. */ @@ -228,14 +178,15 @@ new_sese_info (edge entry, edge exit) region->region.entry = entry; region->region.exit = exit; - region->loops = BITMAP_ALLOC (NULL); region->loop_nest.create (3); region->params.create (3); region->rename_map = new rename_map_t; + region->parameter_rename_map = new parameter_rename_map_t; region->copied_bb_map = new bb_map_t; region->bbs.create (3); region->incomplete_phis.create (3); + return region; } @@ -244,9 +195,6 @@ new_sese_info (edge entry, edge exit) void free_sese_info (sese_info_p region) { - if (region->loops) - region->loops = BITMAP_ALLOC (NULL); - region->params.release (); region->loop_nest.release (); @@ -259,9 +207,11 @@ free_sese_info (sese_info_p region) (*it).second.release (); delete region->rename_map; + delete region->parameter_rename_map; delete region->copied_bb_map; region->rename_map = NULL; + region->parameter_rename_map = NULL; region->copied_bb_map = NULL; region->bbs.release (); @@ -635,3 +585,37 @@ scalar_evolution_in_region (const sese_l ®ion, loop_p loop, tree t) return instantiate_scev (before, loop, t); } + +/* Pretty print edge E to FILE. */ + +void +print_edge (FILE *file, const_edge e) +{ + fprintf (file, "edge (bb_%d, bb_%d)", e->src->index, e->dest->index); +} + +/* Pretty print sese S to FILE. */ + +void +print_sese (FILE *file, const sese_l &s) +{ + fprintf (file, "(entry_"); print_edge (file, s.entry); + fprintf (file, ", exit_"); print_edge (file, s.exit); + fprintf (file, ")\n"); +} + +/* Pretty print edge E to STDERR. */ + +DEBUG_FUNCTION void +debug_edge (const_edge e) +{ + print_edge (stderr, e); +} + +/* Pretty print sese S to STDERR. */ + +DEBUG_FUNCTION void +debug_sese (const sese_l &s) +{ + print_sese (stderr, s); +} |