re PR target/18701 (mmix-knuth-mmixware gcc.c-torture/execute failures: 20010224-1.c, 20020216-1.c, 20040218-1.c, 20040709-2.c)

PR target/18701
	* combine.c (combine_simplify_rtx): Do not allow paradoxical
	subregs of MEM.

From-SVN: r92762
This commit is contained in:
Hans-Peter Nilsson 2004-12-31 16:28:34 +00:00 committed by Hans-Peter Nilsson
parent 32f2ce0299
commit bf08edc139
2 changed files with 10 additions and 2 deletions

View File

@ -1,5 +1,9 @@
2004-12-31 Hans-Peter Nilsson <hp@bitrange.com>
PR target/18701
* combine.c (combine_simplify_rtx): Do not allow paradoxical
subregs of MEM.
PR target/18701
* combine.c (gen_lowpart_for_combine): When stripping SUBREG of
MEM, adjust imode and isize.

View File

@ -3983,10 +3983,14 @@ combine_simplify_rtx (rtx x, enum machine_mode op0_mode, int in_dest)
}
/* Don't change the mode of the MEM if that would change the meaning
of the address. */
of the address. Similarly, don't allow widening, as that may
access memory outside the defined object or using an address
that is invalid for a wider mode. */
if (MEM_P (SUBREG_REG (x))
&& (MEM_VOLATILE_P (SUBREG_REG (x))
|| mode_dependent_address_p (XEXP (SUBREG_REG (x), 0))))
|| mode_dependent_address_p (XEXP (SUBREG_REG (x), 0))
|| (GET_MODE_SIZE (mode)
> GET_MODE_SIZE (GET_MODE (SUBREG_REG (x))))))
return gen_rtx_CLOBBER (mode, const0_rtx);
/* Note that we cannot do any narrowing for non-constants since