combine.c (known_cond): After replacing the REG of a SUBREG, try to simplify it.

* combine.c (known_cond): After replacing the REG of a SUBREG, try
to simplify it.

From-SVN: r49775
This commit is contained in:
Alexandre Oliva 2002-02-14 19:30:42 +00:00 committed by Alexandre Oliva
parent 4606272bc4
commit 9a360704f9
2 changed files with 22 additions and 0 deletions

View File

@ -1,5 +1,8 @@
2002-02-14 Alexandre Oliva <aoliva@redhat.com>
* combine.c (known_cond): After replacing the REG of a SUBREG, try
to simplify it.
* function.c (assign_parms): Demote promoted argument passed by
transparent reference.

View File

@ -7430,6 +7430,25 @@ known_cond (x, cond, reg, val)
}
}
}
else if (code == SUBREG)
{
enum machine_mode inner_mode = GET_MODE (SUBREG_REG (x));
rtx new, r = known_cond (SUBREG_REG (x), cond, reg, val);
if (SUBREG_REG (x) != r)
{
/* We must simplify subreg here, before we lose track of the
original inner_mode. */
new = simplify_subreg (GET_MODE (x), r,
inner_mode, SUBREG_BYTE (x));
if (new)
return new;
else
SUBST (SUBREG_REG (x), r);
}
return x;
}
fmt = GET_RTX_FORMAT (code);
for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)