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:
Richard Biener 2016-12-14 08:33:12 +00:00 committed by Richard Biener
parent 803312a760
commit 253c0172bb
4 changed files with 32 additions and 12 deletions

View file

@ -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):

View file

@ -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

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

View file

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