summaryrefslogtreecommitdiff
path: root/gcc/reload.c
diff options
context:
space:
mode:
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>2000-05-09 11:07:48 +0000
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>2000-05-09 11:07:48 +0000
commit38219f2f57a7740f7ab99b90212f8921f2c133d6 (patch)
tree7fff4281075af411c0bb40feb51d8ea6d8072bc2 /gcc/reload.c
parent47fb066920493d0c1596884c561d89585f842361 (diff)
downloadgcc-38219f2f57a7740f7ab99b90212f8921f2c133d6.tar.gz
* alias.c (nonlocal_reference_p): Minor reformatting.
* reload.c (find_equiv_reg): Simplify logic for CALL_INSN_FUNCTION_USAGE since can't have SUBREG or pseudos and some some reformatting. * reload1.c (reload_combine): Don't assume everything in CALL_INSN_FUNCTION_USAGE is a REG and clean up code a bit. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@33797 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/reload.c')
-rw-r--r--gcc/reload.c21
1 files changed, 8 insertions, 13 deletions
diff --git a/gcc/reload.c b/gcc/reload.c
index 4a3560257b9..e1f58387a0f 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -6300,30 +6300,25 @@ find_equiv_reg (goal, insn, class, other, reload_reg_p, goalreg, mode)
if (GET_CODE (pat) == CLOBBER)
{
register rtx dest = SET_DEST (pat);
- while (GET_CODE (dest) == SUBREG
- || GET_CODE (dest) == ZERO_EXTRACT
- || GET_CODE (dest) == SIGN_EXTRACT
- || GET_CODE (dest) == STRICT_LOW_PART)
- dest = XEXP (dest, 0);
+
if (GET_CODE (dest) == REG)
{
register int xregno = REGNO (dest);
- int xnregs;
- if (REGNO (dest) < FIRST_PSEUDO_REGISTER)
- xnregs = HARD_REGNO_NREGS (xregno, GET_MODE (dest));
- else
- xnregs = 1;
+ int xnregs
+ = HARD_REGNO_NREGS (xregno, GET_MODE (dest));
+
if (xregno < regno + nregs
&& xregno + xnregs > regno)
return 0;
- if (xregno < valueno + valuenregs
+ else if (xregno < valueno + valuenregs
&& xregno + xnregs > valueno)
return 0;
- if (goal_mem_addr_varies
- && reg_overlap_mentioned_for_reload_p (dest,
+ else if (goal_mem_addr_varies
+ && reg_overlap_mentioned_for_reload_p (dest,
goal))
return 0;
}
+
else if (goal_mem && GET_CODE (dest) == MEM
&& ! push_operand (dest, GET_MODE (dest)))
return 0;