aboutsummaryrefslogtreecommitdiff
path: root/gcc/reload.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>2000-05-09 11:07:48 +0000
committerRichard Kenner <kenner@gcc.gnu.org>2000-05-09 07:07:48 -0400
commitf8cd412619e4c5a820500b620666b28184daaf25 (patch)
tree7fff4281075af411c0bb40feb51d8ea6d8072bc2 /gcc/reload.c
parentcf7637a0838398cba4afa7e4eb68bcb587222d2d (diff)
downloadgcc-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.c21
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;