Comments
Patch
From 6f09490824a66310674b5ebb60fcb4ac022f91fb Mon Sep 17 00:00:00 2001
From: Sebastian Pop <sebpop@gmail.com>
Date: Wed, 27 Oct 2010 14:24:57 -0500
Subject: [PATCH] Call if-conversion from loop flattening.
---
gcc/passes.c | 1 -
gcc/tree-flow.h | 4 ++++
gcc/tree-if-conv.c | 4 ++--
gcc/tree-loop-flattening.c | 3 +++
4 files changed, 9 insertions(+), 3 deletions(-)
@@ -914,7 +914,6 @@ init_optimization_passes (void)
NEXT_PASS (pass_predcom);
NEXT_PASS (pass_complete_unroll);
NEXT_PASS (pass_flatten_loops);
- NEXT_PASS (pass_if_conversion);
NEXT_PASS (pass_slp_vectorize);
NEXT_PASS (pass_parallelize_loops);
NEXT_PASS (pass_loop_prefetch);
@@ -730,6 +730,10 @@ bool contains_abnormal_ssa_name_p (tree);
bool stmt_dominates_stmt_p (gimple, gimple);
void mark_virtual_ops_for_renaming (gimple);
+/* In tree-if-conv.c */
+bool gate_tree_if_conversion (void);
+bool tree_if_conversion (struct loop *);
+
/* In tree-ssa-dce.c */
void mark_virtual_phi_result_for_renaming (gimple);
@@ -1653,7 +1653,7 @@ combine_blocks (struct loop *loop)
/* If-convert LOOP when it is legal. For the moment this pass has no
profitability analysis. Returns true when something changed. */
-static bool
+bool
tree_if_conversion (struct loop *loop)
{
bool changed = false;
@@ -1715,7 +1715,7 @@ main_tree_if_conversion (void)
/* Returns true when the if-conversion pass is enabled. */
-static bool
+bool
gate_tree_if_conversion (void)
{
return ((flag_tree_vectorize && flag_tree_loop_if_convert != 0)
@@ -570,6 +570,9 @@ flatten_loop (loop_p loop)
if (!single_pred_p (loop->latch))
loop->latch = split_edge (loop_latch_edge (loop));
+ if (gate_tree_if_conversion ())
+ tree_if_conversion (loop);
+
return TODO_update_ssa | TODO_verify_ssa;
}
--
1.7.0.4