[Bug middle-end/46761] [4.6 Regression] -fgraphite-identity produces wrong code for array initialization arr[i] = i
amonakov at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Dec 3 16:54:00 GMT 2010
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46761
Alexander Monakov <amonakov at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |amonakov at gcc dot gnu.org
--- Comment #3 from Alexander Monakov <amonakov at gcc dot gnu.org> 2010-12-03 16:54:26 UTC ---
Sometimes graphite generates wrong guards for regions. The following patch
fixes the attached testcase for me, but I have not tested it any further.
diff --git a/gcc/graphite-clast-to-gimple.c b/gcc/graphite-clast-to-gimple.c
index 9a90ef7..8a80033 100644
--- a/gcc/graphite-clast-to-gimple.c
+++ b/gcc/graphite-clast-to-gimple.c
@@ -986,7 +986,7 @@ graphite_create_new_loop_guard (sese region, edge
entry_edge,
: PLUS_EXPR, type, ub, one);
/* When ub + 1 wraps around, use lb <= ub. */
- if (integer_zerop (ub_one))
+ if (TREE_OVERFLOW_P (ub_one))
cond_expr = fold_build2 (LE_EXPR, boolean_type_node, lb, ub);
else
cond_expr = fold_build2 (LT_EXPR, boolean_type_node, lb, ub_one);
More information about the Gcc-bugs
mailing list