OSDN Git Service

Fix PR44483: incrementally gimplify BB predicates to avoid redundant computations.
authorspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 11 Jun 2010 18:28:17 +0000 (18:28 +0000)
committerspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 11 Jun 2010 18:28:17 +0000 (18:28 +0000)
commitfa683b760a396a8b6c03304f009306eb48da1b70
treec2958d27e9baeef55b3c52f7e9e7f229f90562ba
parentdab3b01f00791cf352db111d66dd7af59a926d9b
Fix PR44483: incrementally gimplify BB predicates to avoid redundant computations.

2010-06-11  Sebastian Pop  <sebastian.pop@amd.com>

PR middle-end/44483
* tree-if-conv.c (bb_predicate_s): New struct.
(bb_predicate_p): New.
(bb_has_predicate): New.
(bb_predicate): New.
(set_bb_predicate): New.
(bb_predicate_gimplified_stmts): New.
(set_bb_predicate_gimplified_stmts): New.
(add_bb_predicate_gimplified_stmts): New.
(init_bb_predicate): New.
(free_bb_predicate): New.
(is_predicated): Use bb_predicate.
(add_to_predicate_list): Use bb_predicate and set_bb_predicate.
(predicate_bbs): Same.  Gimplify the condition of the basic blocks
before processing their successors.
(clean_predicate_lists): Removed.
(find_phi_replacement_condition): Use bb_predicate.
(process_phi_nodes): Renamed ifconvert_phi_nodes.  Avoid useless
computations.
(insert_gimplified_predicates): New.
(combine_blocks): Call insert_gimplified_predicates.
(tree_if_conversion): Call free_bb_predicate instead of
clean_predicate_lists.

* gcc.dg/tree-ssa/pr44483.c: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@160625 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/tree-ssa/pr44483.c [new file with mode: 0644]
gcc/tree-if-conv.c