Commit 4a954e06 by Segher Boessenkool Committed by Segher Boessenkool

combine: Don't mess with subregs of floating point (PR78590)

PR78590 shows a problem in change_zero_ext, where we change a zero_extend
of a subreg to a logical and.  We should only do this if the thing we are
taking the subreg of is a scalar integer, otherwise we will take a subreg
of (e.g.) a float in a different size, which is nonsensical and hits an
assert.


	PR rtl-optimization/78590
	* combine.c (change_zero_ext): Transform zero_extend of subregs only
	if the subreg_reg is a scalar integer mode.

From-SVN: r242999
parent 053d5e0c
2016-11-30 Segher Boessenkool <segher@kernel.crashing.org>
PR rtl-optimization/78590
* combine.c (change_zero_ext): Transform zero_extend of subregs only
if the subreg_reg is a scalar integer mode.
2016-11-30 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/78586
......@@ -11251,6 +11251,7 @@ change_zero_ext (rtx pat)
else if (GET_CODE (x) == ZERO_EXTEND
&& SCALAR_INT_MODE_P (mode)
&& GET_CODE (XEXP (x, 0)) == SUBREG
&& SCALAR_INT_MODE_P (GET_MODE (SUBREG_REG (XEXP (x, 0))))
&& !paradoxical_subreg_p (XEXP (x, 0))
&& subreg_lowpart_p (XEXP (x, 0)))
{
......
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