Hi All, Here is a simple enhancement for predicate computation in if-convert phase:
We use notion of cd equivalence to get simpler predicate for join block, e.g. if join block has 2 predecessors with predicates p1 & p2 and p1 & !p2, we'd like to get p1 for it instead of p1 & p2 | p1 & !p2. Bootstrap and regression testing did not show any new failures. Is it OK for trunk? gcc/ChangeLog 2014-10-16 Yuri Rumyantsev <ysrum...@gmail.com> * tree-if-conv.c (add_to_predicate_list): Check unconditionally that bb is always executed to early exit. Use predicate of cd-equivalent block for join blocks if it exists. (if_convertible_loop_p_1): Recompute POST_DOMINATOR tree. (tree_if_conversion): Free post-dominance information.
if-conv.patch
Description: Binary data