From 29caa68aa5ee0e2defeb6331d15b458f3e6853ba Mon Sep 17 00:00:00 2001 From: Sebastian Pop Date: Fri, 25 Jun 2010 18:38:14 +0000 Subject: [PATCH] Use reset_bb_predicate whenever the predicate of a BB should be reset to true. 2010-06-25 Sebastian Pop * tree-if-conv.c (init_bb_predicate): Initialize the predicate to boolean_true_node. (reset_bb_predicate): New. (predicate_bbs): Call reset_bb_predicate. From-SVN: r161397 --- gcc/ChangeLog | 7 +++++++ gcc/tree-if-conv.c | 17 +++++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b7fbcb9..0e9bd83 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2010-06-25 Sebastian Pop + * tree-if-conv.c (init_bb_predicate): Initialize the predicate + to boolean_true_node. + (reset_bb_predicate): New. + (predicate_bbs): Call reset_bb_predicate. + +2010-06-25 Sebastian Pop + * tree-if-conv.c (combine_blocks): Remove FIXME comment. (tree_if_conversion): Returns true when something has been changed. (main_tree_if_conversion): Return TODO_cleanup_cfg when if-conversion diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c index f200d48..80a53a8 100644 --- a/gcc/tree-if-conv.c +++ b/gcc/tree-if-conv.c @@ -175,7 +175,7 @@ init_bb_predicate (basic_block bb) { bb->aux = XNEW (struct bb_predicate_s); set_bb_predicate_gimplified_stmts (bb, NULL); - set_bb_predicate (bb, NULL_TREE); + set_bb_predicate (bb, boolean_true_node); } /* Free the predicate of basic block BB. */ @@ -203,6 +203,16 @@ free_bb_predicate (basic_block bb) bb->aux = NULL; } +/* Free the predicate of BB and reinitialize it with the true + predicate. */ + +static inline void +reset_bb_predicate (basic_block bb) +{ + free_bb_predicate (bb); + init_bb_predicate (bb); +} + /* Create a new temp variable of type TYPE. Add GIMPLE_ASSIGN to assign EXP to the new variable. */ @@ -605,8 +615,7 @@ predicate_bbs (loop_p loop) to be processed: skip it. */ if (bb == loop->latch) { - set_bb_predicate (loop->latch, boolean_true_node); - set_bb_predicate_gimplified_stmts (loop->latch, NULL); + reset_bb_predicate (loop->latch); continue; } @@ -680,7 +689,7 @@ predicate_bbs (loop_p loop) } /* The loop header is always executed. */ - set_bb_predicate (loop->header, boolean_true_node); + reset_bb_predicate (loop->header); gcc_assert (bb_predicate_gimplified_stmts (loop->header) == NULL && bb_predicate_gimplified_stmts (loop->latch) == NULL); -- 2.7.4