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:
parent
32f2ce0299
commit
bf08edc139
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue