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>
|
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
|
* combine.c (simplify_comparison): Update op1 after constant
|
||||||
extension.
|
extension.
|
||||||
* recog.c (const_int_operand): Accept only constants valid
|
* 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')
|
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
|
/* In general, don't install a subreg involving two
|
||||||
modes not tieable. It can worsen register
|
modes not tieable. It can worsen register
|
||||||
|
|
Loading…
Reference in New Issue