Commit 0a33d11e by Richard Henderson Committed by Richard Henderson

combine.c (subst): Do not substitute for a register as a destination...

        * combine.c (subst): Do not substitute for a register as
        a destination subreg/strict_low_part/zero_extract.

From-SVN: r42429
parent c93d7fae
2001-05-21 Richard Henderson <rth@redhat.com>
* combine.c (subst): Do not substitute for a register as
a destination subreg/strict_low_part/zero_extract.
* combine.c (simplify_comparison): Update op1 after constant
extension.
* recog.c (const_int_operand): Accept only constants valid
......
......@@ -3394,7 +3394,16 @@ subst (x, from, to, in_dest, unique_copy)
}
else if (fmt[i] == 'e')
{
if (COMBINE_RTX_EQUAL_P (XEXP (x, i), from))
/* If this is a register being set, ignore it. */
new = XEXP (x, i);
if (in_dest
&& (code == SUBREG || code == STRICT_LOW_PART
|| code == ZERO_EXTRACT)
&& i == 0
&& GET_CODE (new) == REG)
;
else if (COMBINE_RTX_EQUAL_P (XEXP (x, i), from))
{
/* In general, don't install a subreg involving two
modes not tieable. It can worsen register
......
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