Commit 819df781 by Richard Biener Committed by Richard Biener

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
parent e5dcff3e
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> 2017-03-27 Claudiu Zissulescu <claziss@synopsys.com>
* config/arc/predicates.md (move_double_src_operand): Replace the * config/arc/predicates.md (move_double_src_operand): Replace the
......
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> 2017-03-27 Claudiu Zissulescu <claziss@synopsys.com>
* testsuite/gcc.target/arc/interrupt-4.c: New file. * testsuite/gcc.target/arc/interrupt-4.c: New file.
......
/* { dg-do compile } */
int
nr (void)
{
}
void
it (int dl)
{
int vp = 0;
for (;;)
{
dl = vp ^ nr ();
dl ^= vp;
vp = 1;
}
}
...@@ -741,9 +741,11 @@ likely_value (gimple *stmt) ...@@ -741,9 +741,11 @@ likely_value (gimple *stmt)
case PLUS_EXPR: case PLUS_EXPR:
case MINUS_EXPR: case MINUS_EXPR:
case POINTER_PLUS_EXPR: case POINTER_PLUS_EXPR:
case BIT_XOR_EXPR:
/* Not MIN_EXPR, MAX_EXPR. One VARYING operand may be selected. /* Not MIN_EXPR, MAX_EXPR. One VARYING operand may be selected.
Not bitwise operators, one VARYING operand may specify the 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 COMPLEX_EXPR as one VARYING operand makes the result partly
not UNDEFINED. Not *DIV_EXPR, comparisons and shifts because not UNDEFINED. Not *DIV_EXPR, comparisons and shifts because
the undefined operand may be promoted. */ the undefined operand may be promoted. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment