re PR tree-optimization/80842 (ICE at -O3 on x86_64-linux-gnu in "set_lattice_value")
2017-05-26 Richard Biener <rguenther@suse.de> PR tree-optimization/80842 * tree-ssa-ccp.c (set_lattice_value): Always meet with the old value. * gcc.dg/torture/pr80842.c: New testcase. From-SVN: r248482
This commit is contained in:
parent
f408a6350f
commit
28e0e05bad
@ -1,3 +1,9 @@
|
||||
2017-05-26 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/80842
|
||||
* tree-ssa-ccp.c (set_lattice_value): Always meet with the old
|
||||
value.
|
||||
|
||||
2017-05-26 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/80844
|
||||
|
@ -1,3 +1,8 @@
|
||||
2017-05-26 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/80842
|
||||
* gcc.dg/torture/pr80842.c: New testcase.
|
||||
|
||||
2017-05-25 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/79652
|
||||
|
23
gcc/testsuite/gcc.dg/torture/pr80842.c
Normal file
23
gcc/testsuite/gcc.dg/torture/pr80842.c
Normal file
@ -0,0 +1,23 @@
|
||||
/* { dg-do compile } */
|
||||
|
||||
unsigned a;
|
||||
short b;
|
||||
char c, d, e;
|
||||
void fn1();
|
||||
void fn2() {
|
||||
a++;
|
||||
for (; a;)
|
||||
fn1(0, 0);
|
||||
}
|
||||
void fn3() {
|
||||
fn2();
|
||||
l1:;
|
||||
unsigned char f;
|
||||
short g;
|
||||
unsigned char *h = &f;
|
||||
g += &h ? e ? g = 1 : 0 : 0;
|
||||
d = g;
|
||||
c *f;
|
||||
if (d & (b %= *h) < f * d / (d -= 0))
|
||||
goto l1;
|
||||
}
|
@ -497,9 +497,7 @@ set_lattice_value (tree var, ccp_prop_value_t *new_val)
|
||||
use the meet operator to retain a conservative value.
|
||||
Missed optimizations like PR65851 makes this necessary.
|
||||
It also ensures we converge to a stable lattice solution. */
|
||||
if (new_val->lattice_val == CONSTANT
|
||||
&& old_val->lattice_val == CONSTANT
|
||||
&& TREE_CODE (new_val->value) != SSA_NAME)
|
||||
if (old_val->lattice_val != UNINITIALIZED)
|
||||
ccp_lattice_meet (new_val, old_val);
|
||||
|
||||
gcc_checking_assert (valid_lattice_transition (*old_val, *new_val));
|
||||
|
Loading…
x
Reference in New Issue
Block a user