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);
     }
 

Reply via email to