Commit 77ec8b8c by Aditya Kumar Committed by Sebastian Pop

avoid generation of empty guards in trivial cases

We used to insert a trivial integer_onep condition around loops we know have
more than an iteration.  This patch avoids generating those conditions.

	* graphite-isl-ast-to-gimple.c (graphite_create_new_loop_guard): Do not call
	create_empty_if_region_on_edge when cond_expr is true.
	(translate_isl_ast_node_for): Check whether a guard has been generated.

Co-Authored-By: Sebastian Pop <s.pop@samsung.com>

From-SVN: r229137
parent caf5b4df
2015-10-21 Aditya Kumar <aditya.k7@samsung.com> 2015-10-21 Aditya Kumar <aditya.k7@samsung.com>
Sebastian Pop <s.pop@samsung.com>
* graphite-isl-ast-to-gimple.c (graphite_create_new_loop_guard): Do not call
create_empty_if_region_on_edge when cond_expr is true.
(translate_isl_ast_node_for): Check whether a guard has been generated.
2015-10-21 Aditya Kumar <aditya.k7@samsung.com>
* graphite-poly.h (struct dr_info): Added invalid_alias_set number. * graphite-poly.h (struct dr_info): Added invalid_alias_set number.
(operator=): Removed. (operator=): Removed.
...@@ -707,7 +707,10 @@ graphite_create_new_loop_guard (edge entry_edge, ...@@ -707,7 +707,10 @@ graphite_create_new_loop_guard (edge entry_edge,
cond_expr = fold_build2 (LT_EXPR, boolean_type_node, *lb, ub_one); cond_expr = fold_build2 (LT_EXPR, boolean_type_node, *lb, ub_one);
} }
exit_edge = create_empty_if_region_on_edge (entry_edge, cond_expr); if (integer_onep (cond_expr))
exit_edge = entry_edge;
else
exit_edge = create_empty_if_region_on_edge (entry_edge, cond_expr);
return exit_edge; return exit_edge;
} }
...@@ -723,10 +726,14 @@ translate_isl_ast_node_for (loop_p context_loop, __isl_keep isl_ast_node *node, ...@@ -723,10 +726,14 @@ translate_isl_ast_node_for (loop_p context_loop, __isl_keep isl_ast_node *node,
tree type, lb, ub; tree type, lb, ub;
edge last_e = graphite_create_new_loop_guard (next_e, node, &type, edge last_e = graphite_create_new_loop_guard (next_e, node, &type,
&lb, &ub, ip); &lb, &ub, ip);
edge true_e = get_true_edge_from_guard_bb (next_e->dest);
translate_isl_ast_for_loop (context_loop, node, true_e, if (last_e == next_e)
type, lb, ub, ip); /* There was no guard generated. */
return translate_isl_ast_for_loop (context_loop, node, last_e,
type, lb, ub, ip);
edge true_e = get_true_edge_from_guard_bb (next_e->dest);
translate_isl_ast_for_loop (context_loop, node, true_e, type, lb, ub, ip);
return last_e; return last_e;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment