combine lhs zero_extract fix (PR78186)

PR rtl-optimization/78186
	* combine.c (change_zero_ext): Mask the RHS of a zero_extract as
	well, when converting to IOR.

From-SVN: r241824
This commit is contained in:
Segher Boessenkool 2016-11-03 17:04:22 +01:00 committed by Segher Boessenkool
parent 35ea947ffa
commit 122e3608b6
2 changed files with 9 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2016-11-03 Segher Boessenkool <segher@kernel.crashing.org>
PR rtl-optimization/78186
* combine.c (change_zero_ext): Mask the RHS of a zero_extract as
well, when converting to IOR.
2016-11-03 Eric Botcazou <ebotcazou@adacore.com>
* config/sparc/sparc.md (vec_interleave_lowv8qi): Delete.

View File

@ -11190,6 +11190,9 @@ change_zero_ext (rtx pat)
rtx x = gen_rtx_AND (mode, reg, immed_wide_int_const (mask, mode));
rtx y = simplify_gen_binary (ASHIFT, mode, SET_SRC (pat),
GEN_INT (offset));
wide_int mask2 = wi::shifted_mask (offset, width, false, reg_width);
y = simplify_gen_binary (AND, mode, y,
immed_wide_int_const (mask2, mode));
rtx z = simplify_gen_binary (IOR, mode, x, y);
SUBST (SET_DEST (pat), reg);
SUBST (SET_SRC (pat), z);