re PR tree-optimization/83435 (ICE in set_value_range, at tree-vrp.c:211)
2018-01-11 Richard Biener <rguenther@suse.de> PR tree-optimization/83435 * graphite.c (canonicalize_loop_form): Ignore fake loop exit edges. * graphite-scop-detection.c (scop_detection::get_sese): Likewise. * tree-vrp.c (add_assert_info): Drop TREE_OVERFLOW if they appear. * gcc.dg/graphite/pr83435.c: New testcase. From-SVN: r256535
This commit is contained in:
parent
dc6401818b
commit
b0bd3e52c1
|
@ -1,3 +1,10 @@
|
|||
2018-01-11 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/83435
|
||||
* graphite.c (canonicalize_loop_form): Ignore fake loop exit edges.
|
||||
* graphite-scop-detection.c (scop_detection::get_sese): Likewise.
|
||||
* tree-vrp.c (add_assert_info): Drop TREE_OVERFLOW if they appear.
|
||||
|
||||
2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
|
||||
Alan Hayward <alan.hayward@arm.com>
|
||||
David Sherwood <david.sherwood@arm.com>
|
||||
|
|
|
@ -428,7 +428,7 @@ scop_detection::get_sese (loop_p loop)
|
|||
|
||||
edge scop_begin = loop_preheader_edge (loop);
|
||||
edge scop_end = single_exit (loop);
|
||||
if (!scop_end || (scop_end->flags & EDGE_COMPLEX))
|
||||
if (!scop_end || (scop_end->flags & (EDGE_COMPLEX|EDGE_FAKE)))
|
||||
return invalid_sese;
|
||||
/* Include the BB with the loop-closed SSA PHI nodes.
|
||||
canonicalize_loop_closed_ssa makes sure that is in proper shape. */
|
||||
|
|
|
@ -324,7 +324,7 @@ canonicalize_loop_form (void)
|
|||
FOR_EACH_LOOP (loop, LI_FROM_INNERMOST)
|
||||
{
|
||||
edge e = single_exit (loop);
|
||||
if (!e || (e->flags & EDGE_COMPLEX))
|
||||
if (!e || (e->flags & (EDGE_COMPLEX|EDGE_FAKE)))
|
||||
continue;
|
||||
|
||||
canonicalize_loop_closed_ssa (loop, e);
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2018-01-11 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/83435
|
||||
* gcc.dg/graphite/pr83435.c: New testcase.
|
||||
|
||||
2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
|
||||
Alan Hayward <alan.hayward@arm.com>
|
||||
David Sherwood <david.sherwood@arm.com>
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O -ftree-parallelize-loops=2 -floop-parallelize-all" } */
|
||||
|
||||
int yj, ax;
|
||||
|
||||
void
|
||||
gf (signed char mp)
|
||||
{
|
||||
int *dh = &yj;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
signed char sb;
|
||||
|
||||
for (sb = 0; sb < 1; sb -= 8)
|
||||
{
|
||||
}
|
||||
|
||||
mp &= mp <= sb;
|
||||
if (mp == 0)
|
||||
dh = &ax;
|
||||
mp = 0;
|
||||
*dh = 0;
|
||||
}
|
||||
}
|
|
@ -2786,6 +2786,8 @@ add_assert_info (vec<assert_info> &asserts,
|
|||
assert_info info;
|
||||
info.comp_code = comp_code;
|
||||
info.name = name;
|
||||
if (TREE_OVERFLOW_P (val))
|
||||
val = drop_tree_overflow (val);
|
||||
info.val = val;
|
||||
info.expr = expr;
|
||||
asserts.safe_push (info);
|
||||
|
|
Loading…
Reference in New Issue