diff options
author | Richard Kenner <kenner@vlsi1.ultra.nyu.edu> | 2000-05-09 11:07:48 +0000 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 2000-05-09 07:07:48 -0400 |
commit | f8cd412619e4c5a820500b620666b28184daaf25 (patch) | |
tree | 7fff4281075af411c0bb40feb51d8ea6d8072bc2 /gcc/reload.c | |
parent | cf7637a0838398cba4afa7e4eb68bcb587222d2d (diff) | |
download | gcc-f8cd412619e4c5a820500b620666b28184daaf25.zip gcc-f8cd412619e4c5a820500b620666b28184daaf25.tar.gz gcc-f8cd412619e4c5a820500b620666b28184daaf25.tar.bz2 |
alias.c (nonlocal_reference_p): Minor reformatting.
* 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.
From-SVN: r33797
Diffstat (limited to 'gcc/reload.c')
-rw-r--r-- | gcc/reload.c | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/gcc/reload.c b/gcc/reload.c index 4a35602..e1f5838 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; |