... 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
+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 ...
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;
}
\f