re PR tree-optimization/80181 (ICE in set_lattice_value, at tree-ssa-ccp.c:505)

2017-03-27  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/80181
	* tree-ssa-ccp.c (likely_value): UNDEFINED ^ X is UNDEFINED.

	* gcc.dg/torture/pr80181.c: New testcase.

From-SVN: r246500
This commit is contained in:
Richard Biener 2017-03-27 12:52:13 +00:00 committed by Richard Biener
parent e5dcff3eb5
commit 819df78156
4 changed files with 32 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2017-03-27 Richard Biener <rguenther@suse.de>
PR tree-optimization/80181
* tree-ssa-ccp.c (likely_value): UNDEFINED ^ X is UNDEFINED.
2017-03-27 Claudiu Zissulescu <claziss@synopsys.com>
* config/arc/predicates.md (move_double_src_operand): Replace the

View File

@ -1,3 +1,8 @@
2017-03-27 Richard Biener <rguenther@suse.de>
PR tree-optimization/80181
* gcc.dg/torture/pr80181.c: New testcase.
2017-03-27 Claudiu Zissulescu <claziss@synopsys.com>
* testsuite/gcc.target/arc/interrupt-4.c: New file.

View File

@ -0,0 +1,19 @@
/* { dg-do compile } */
int
nr (void)
{
}
void
it (int dl)
{
int vp = 0;
for (;;)
{
dl = vp ^ nr ();
dl ^= vp;
vp = 1;
}
}

View File

@ -741,9 +741,11 @@ likely_value (gimple *stmt)
case PLUS_EXPR:
case MINUS_EXPR:
case POINTER_PLUS_EXPR:
case BIT_XOR_EXPR:
/* Not MIN_EXPR, MAX_EXPR. One VARYING operand may be selected.
Not bitwise operators, one VARYING operand may specify the
result completely. Not logical operators for the same reason.
result completely.
Not logical operators for the same reason, apart from XOR.
Not COMPLEX_EXPR as one VARYING operand makes the result partly
not UNDEFINED. Not *DIV_EXPR, comparisons and shifts because
the undefined operand may be promoted. */