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
This commit is contained in:
parent
c93d7fae7b
commit
0a33d11eab
|
@ -1,5 +1,8 @@
|
|||
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
|
||||
|
|
Loading…
Reference in New Issue