simplify-rtx: The truncation of an IOR can have all bits set (PR81423)
... if it is an IOR with a constant with all bits set in the mode that is truncated to, for example. Handle that case. PR rtl-optimization/81423 * simplify-rtx.c (simplify_truncation): Handle truncating an IOR with a constant that is -1 in the truncated to mode. From-SVN: r250363
This commit is contained in:
parent
ccfa843f67
commit
3d50b6045a
2 changed files with 15 additions and 0 deletions
|
@ -1,3 +1,9 @@
|
|||
2017-07-19 Segher Boessenkool <segher@kernel.crashing.org>
|
||||
|
||||
PR rtl-optimization/81423
|
||||
* simplify-rtx.c (simplify_truncation): Handle truncating an IOR
|
||||
with a constant that is -1 in the truncated to mode.
|
||||
|
||||
2017-07-19 Jan Hubicka <hubicka@ucw.cz>
|
||||
|
||||
* predict.c (propagate_unlikely_bbs_forward): Break out from ...
|
||||
|
|
|
@ -857,6 +857,15 @@ simplify_truncation (machine_mode mode, rtx op,
|
|||
return simplify_gen_unary (TRUNCATE, mode, XEXP (op, 0),
|
||||
GET_MODE (XEXP (op, 0)));
|
||||
|
||||
/* (truncate:A (ior X C)) is (const_int -1) if C is equal to that already,
|
||||
in mode A. */
|
||||
if (GET_CODE (op) == IOR
|
||||
&& SCALAR_INT_MODE_P (mode)
|
||||
&& SCALAR_INT_MODE_P (op_mode)
|
||||
&& CONST_INT_P (XEXP (op, 1))
|
||||
&& trunc_int_for_mode (INTVAL (XEXP (op, 1)), mode) == -1)
|
||||
return constm1_rtx;
|
||||
|
||||
return NULL_RTX;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue