On 09/21/2017 12:07 PM, Richard Biener wrote:
- exit_edge = create_empty_if_region_on_edge (entry_edge,
- unshare_expr (cond_expr));
This removes the fix for PR70045:
...
diff --git a/gcc/graphite-isl-ast-to-gimple.c
b/gcc/graphite-isl-ast-to-gimple.c
index 89a4118..8dd5dc8 100644
--- a/gcc/graphite-isl-ast-to-gimple.c
+++ b/gcc/graphite-isl-ast-to-gimple.c
@@ -821,7 +821,8 @@ graphite_create_new_loop_guard (edge entry_edge,
if (integer_onep (cond_expr))
exit_edge = entry_edge;
else
- exit_edge = create_empty_if_region_on_edge (entry_edge, cond_expr);
+ exit_edge = create_empty_if_region_on_edge (entry_edge,
+ unshare_expr (cond_expr));
return exit_edge;
}
...
Consequently, the pr70045.c testcase is currently ICE-ing.
Attached patch fixes this.
OK for trunk if bootstrap and reg-test on x86_64 succeed?
Thanks,
- Tom
diff --git a/gcc/graphite-isl-ast-to-gimple.c b/gcc/graphite-isl-ast-to-gimple.c
index 848bfe9..b020b2d 100644
--- a/gcc/graphite-isl-ast-to-gimple.c
+++ b/gcc/graphite-isl-ast-to-gimple.c
@@ -739,10 +739,10 @@ translate_isl_ast_node_for (loop_p context_loop, __isl_keep isl_ast_node *node,
as expected. */
tree ub_one = fold_build2 (POINTER_TYPE_P (type)
? POINTER_PLUS_EXPR : PLUS_EXPR,
- type, ub, one);
+ type, unshare_expr (ub), one);
create_empty_if_region_on_edge (next_e,
fold_build2 (LT_EXPR, boolean_type_node,
- lb, ub_one));
+ unshare_expr (lb), ub_one));
next_e = get_true_edge_from_guard_bb (next_e->dest);
}