re PR tree-optimization/48228 (incorrect signed overflow warning when only 0 and 1 are used)

2011-03-22  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/48228
	* tree-vrp.c (vrp_visit_phi_node): Do not stop propagating
	for single-arg PHIs.

	* gcc.dg/Wstrict-overflow-23.c: New testcase.

From-SVN: r171287
This commit is contained in:
Richard Guenther 2011-03-22 12:40:09 +00:00 committed by Richard Biener
parent 0b7e851b85
commit 7bec30e109
4 changed files with 43 additions and 0 deletions

View file

@ -1,3 +1,9 @@
2011-03-22 Richard Guenther <rguenther@suse.de>
PR tree-optimization/48228
* tree-vrp.c (vrp_visit_phi_node): Do not stop propagating
for single-arg PHIs.
2011-03-22 Andrey Belevantsev <abel@ispras.ru>
PR rtl-optimization/48143

View file

@ -1,3 +1,8 @@
2011-03-22 Richard Guenther <rguenther@suse.de>
PR tree-optimization/48228
* gcc.dg/Wstrict-overflow-23.c: New testcase.
2011-03-21 Jack Howarth <howarth@bromo.med.uc.edu>
* lib/prune.exp (prune_gcc_output): Prune "could not create

View file

@ -0,0 +1,31 @@
/* { dg-do compile } */
/* { dg-options "-O2 -Wstrict-overflow" } */
unsigned int
do_scrolling (unsigned int window_size, unsigned int writecost)
{
unsigned int i = window_size;
int terminal_window_p = 0;
unsigned int queue = 0;
for (i = window_size; i; i--)
{
if (writecost < i)
++queue;
else if (writecost & 1)
terminal_window_p = 1;
}
if (queue > 0)
{
if (!terminal_window_p)
{
terminal_window_p = 1;
}
}
if (terminal_window_p)
return 100;
return 0;
}

View file

@ -6619,6 +6619,7 @@ vrp_visit_phi_node (gimple phi)
edge; this helps us avoid an overflow infinity for conditionals
which are not in a loop. */
if (edges > 0
&& gimple_phi_num_args (phi) > 1
&& edges == old_edges)
{
int cmp_min = compare_values (lhs_vr->min, vr_result.min);