diff options
author | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-05-09 11:07:48 +0000 |
---|---|---|
committer | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-05-09 11:07:48 +0000 |
commit | 38219f2f57a7740f7ab99b90212f8921f2c133d6 (patch) | |
tree | 7fff4281075af411c0bb40feb51d8ea6d8072bc2 /gcc/reload.c | |
parent | 47fb066920493d0c1596884c561d89585f842361 (diff) | |
download | gcc-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.c | 21 |
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; |