diff options
author | Sebastian Pop <sebastian.pop@amd.com> | 2008-06-19 15:42:14 +0000 |
---|---|---|
committer | Sebastian Pop <sebastian.pop@amd.com> | 2008-06-19 15:42:14 +0000 |
commit | 6c0f19a602cee08c7aefdaaf367aa51b95d4d4eb (patch) | |
tree | c94eeefe88e9ecbcced398096d5c782bcbefb0a9 | |
parent | fdc6cd45ac886079bcd43d2ce8ec9aaf8a196911 (diff) |
2008-06-19 Sebastian Pop <sebastian.pop@amd.com>
* cfgloopmanip.c: Add missing function comments, fix formatting.
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/graphite@136950 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog.graphite | 4 | ||||
-rw-r--r-- | gcc/cfgloop.h | 1 | ||||
-rw-r--r-- | gcc/cfgloopmanip.c | 45 |
3 files changed, 28 insertions, 22 deletions
diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite index 379db0c1861..2e3d6d3d1ae 100644 --- a/gcc/ChangeLog.graphite +++ b/gcc/ChangeLog.graphite @@ -1,3 +1,7 @@ +2008-06-19 Sebastian Pop <sebastian.pop@amd.com> + + * cfgloopmanip.c: Add missing function comments, fix formatting. + 2008-06-18 Konrad Trifunovic <konrad.trifunovic@inria.fr> * cfgloopmanip.c (update_dominators_in_loop): Defined. diff --git a/gcc/cfgloop.h b/gcc/cfgloop.h index f429a66ec4a..6d5e0dfd1c9 100644 --- a/gcc/cfgloop.h +++ b/gcc/cfgloop.h @@ -279,7 +279,6 @@ extern bool can_duplicate_loop_p (const struct loop *loop); #define DLTHE_FLAG_COMPLETTE_PEEL 4 /* Update frequencies expecting a complete peeling. */ - extern struct loop *create_empty_loop_on_edge (edge, tree, tree, tree, tree, tree *, struct loop *); extern void update_dominators_in_loop (struct loop* loop); diff --git a/gcc/cfgloopmanip.c b/gcc/cfgloopmanip.c index cb133d793df..effa4a9dd02 100644 --- a/gcc/cfgloopmanip.c +++ b/gcc/cfgloopmanip.c @@ -466,9 +466,10 @@ scale_loop_frequencies (struct loop *loop, int num, int den) free (bbs); } -void update_dominators_in_loop (struct loop* loop) +/* Recompute dominance information for basic blocks outside LOOP. */ + +void update_dominators_in_loop (struct loop *loop) { - /* Update dominators of blocks outside of LOOP. */ VEC (basic_block, heap) *dom_bbs = NULL; sbitmap seen; basic_block *body; @@ -501,7 +502,12 @@ void update_dominators_in_loop (struct loop* loop) VEC_free (basic_block, heap, dom_bbs); } -/* create_empty_loop_on_edge +/* Creates and returns a new empty loop on ENTRY_EDGE. A new + induction variable is created, with name IV, initial value + INITIAL_VALUE, a stride STRIDE and upper bound UPB is created, and + the value after its increment is returned in VAR_AFTER. The outer + loop containing this loop is OUTER. + | | ------------- ----------------------- | | pred_bb | | pred_bb | @@ -541,13 +547,13 @@ create_empty_loop_on_edge (edge entry_edge, edge exit_e; int prob; - gcc_assert (entry_edge != NULL); - gcc_assert (initial_value != NULL); - gcc_assert (stride != NULL); - gcc_assert (upb != NULL); - gcc_assert (iv != NULL); + gcc_assert (entry_edge); + gcc_assert (initial_value); + gcc_assert (stride); + gcc_assert (upb); + gcc_assert (iv); - /* Create header, latch and wire up the loop */ + /* Create header, latch and wire up the loop. */ pred_bb = entry_edge->src; loop_header = split_edge (entry_edge); loop_latch = split_edge (single_succ_edge (loop_header)); @@ -555,21 +561,20 @@ create_empty_loop_on_edge (edge entry_edge, make_edge (loop_header, succ_bb, 0); redirect_edge_succ_nodup (single_succ_edge (loop_latch), loop_header); - /* set imm dominator info */ + /* Set immediate dominator information. */ set_immediate_dominator (CDI_DOMINATORS, loop_header, pred_bb); set_immediate_dominator (CDI_DOMINATORS, loop_latch, loop_header); set_immediate_dominator (CDI_DOMINATORS, succ_bb, loop_header); - /* init loop structure and put in loop hierarchy */ + /* Initialize a loop structure and put it in a loop hierarchy. */ loop = alloc_loop (); loop->header = loop_header; loop->latch = loop_latch; outer = succ_bb->loop_father; - add_loop (loop,outer); - + add_loop (loop, outer); - /* set frequencies */ + /* Set frequencies. */ freq = EDGE_FREQUENCY (entry_edge); cnt = entry_edge->count; @@ -577,10 +582,10 @@ create_empty_loop_on_edge (edge entry_edge, scale_loop_frequencies (loop, REG_BR_PROB_BASE - prob, REG_BR_PROB_BASE); scale_loop_frequencies (outer, prob, REG_BR_PROB_BASE); - /* update dominators */ + /* Update dominators. */ update_dominators_in_loop (loop); - /* construct IV code in loop */ + /* Construct IV code in loop. */ initial_value = force_gimple_operand (initial_value, &stmts, true, iv); if (stmts) { @@ -594,14 +599,13 @@ create_empty_loop_on_edge (edge entry_edge, *var_after = iv; exit_e = single_exit (loop); bsi = bsi_last (exit_e->src); - - + exit_cond = build2 (LT_EXPR, boolean_type_node, upb, iv); exit_cond = build3 (COND_EXPR, void_type_node, exit_cond, NULL_TREE, NULL_TREE); - exit_test = TREE_OPERAND(exit_cond, 0); + exit_test = TREE_OPERAND (exit_cond, 0); exit_test = force_gimple_operand (exit_test, &stmts, true, NULL); - TREE_OPERAND (exit_cond,0) = exit_test; + TREE_OPERAND (exit_cond, 0) = exit_test; if (stmts) bsi_insert_after (&bsi, stmts, BSI_NEW_STMT); @@ -610,7 +614,6 @@ create_empty_loop_on_edge (edge entry_edge, return loop; } - /* Make area between HEADER_EDGE and LATCH_EDGE a loop by connecting latch to header and update loop tree and dominators accordingly. Everything between them plus LATCH_EDGE destination must |