diff options
author | Richard Biener <rguenther@suse.de> | 2017-03-27 12:52:13 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2017-03-27 12:52:13 +0000 |
commit | 819df7815634caf606a3d212ca4cba6a93acafd0 (patch) | |
tree | 9d4df3e07041d8ee0dcfec096fad6a9660058f31 /gcc/tree-ssa-ccp.c | |
parent | e5dcff3eb55dcccf1ad20d94c0f5680f75f3b75c (diff) | |
download | gcc-819df7815634caf606a3d212ca4cba6a93acafd0.zip gcc-819df7815634caf606a3d212ca4cba6a93acafd0.tar.gz gcc-819df7815634caf606a3d212ca4cba6a93acafd0.tar.bz2 |
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
Diffstat (limited to 'gcc/tree-ssa-ccp.c')
-rw-r--r-- | gcc/tree-ssa-ccp.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c index cd23824..023018c 100644 --- a/gcc/tree-ssa-ccp.c +++ b/gcc/tree-ssa-ccp.c @@ -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. */ |