re PR tree-optimization/78788 (ICE (segfault) on s390x-linux-gnu)
2016-12-14 Richard Biener <rguenther@suse.de> PR tree-optimization/78788 * tree-vrp.c (set_value_range): Allow [-INF(OVF), +INF(OVF)]. (set_and_canonicalize_value_range): Do not drop the above to VARYING. * gcc.dg/torture/pr78788.c: New testcase. From-SVN: r243631
This commit is contained in:
parent
803312a760
commit
253c0172bb
4 changed files with 32 additions and 12 deletions
|
@ -1,3 +1,10 @@
|
|||
2016-12-14 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/78788
|
||||
* tree-vrp.c (set_value_range): Allow [-INF(OVF), +INF(OVF)].
|
||||
(set_and_canonicalize_value_range): Do not drop the above to
|
||||
VARYING.
|
||||
|
||||
2016-12-13 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
|
||||
|
||||
* config/rs6000/rs600.c (rs6000_builtin_vectorization_cost):
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2016-12-14 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/78788
|
||||
* gcc.dg/torture/pr78788.c: New testcase.
|
||||
|
||||
2016-12-13 Nathan Sidwell <nathan@acm.org>
|
||||
|
||||
PR c++/69481
|
||||
|
|
17
gcc/testsuite/gcc.dg/torture/pr78788.c
Normal file
17
gcc/testsuite/gcc.dg/torture/pr78788.c
Normal file
|
@ -0,0 +1,17 @@
|
|||
/* { dg-do compile } */
|
||||
|
||||
int a;
|
||||
long b;
|
||||
long c;
|
||||
void d()
|
||||
{
|
||||
int e = 0;
|
||||
for (; b; b++)
|
||||
if (c)
|
||||
{
|
||||
e++;
|
||||
e++;
|
||||
}
|
||||
while (e)
|
||||
a = e -= 2;
|
||||
}
|
|
@ -365,10 +365,6 @@ set_value_range (value_range *vr, enum value_range_type t, tree min,
|
|||
|
||||
cmp = compare_values (min, max);
|
||||
gcc_assert (cmp == 0 || cmp == -1 || cmp == -2);
|
||||
|
||||
if (needs_overflow_infinity (TREE_TYPE (min)))
|
||||
gcc_assert (!is_overflow_infinity (min)
|
||||
|| !is_overflow_infinity (max));
|
||||
}
|
||||
|
||||
if (flag_checking
|
||||
|
@ -506,14 +502,9 @@ set_and_canonicalize_value_range (value_range *vr, enum value_range_type t,
|
|||
}
|
||||
}
|
||||
|
||||
/* Drop [-INF(OVF), +INF(OVF)] to varying. */
|
||||
if (needs_overflow_infinity (TREE_TYPE (min))
|
||||
&& is_overflow_infinity (min)
|
||||
&& is_overflow_infinity (max))
|
||||
{
|
||||
set_value_range_to_varying (vr);
|
||||
return;
|
||||
}
|
||||
/* Do not drop [-INF(OVF), +INF(OVF)] to varying. (OVF) has to be sticky
|
||||
to make sure VRP iteration terminates, otherwise we can get into
|
||||
oscillations. */
|
||||
|
||||
set_value_range (vr, t, min, max, equiv);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue