aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoern Rennecke <amylaar@gcc.gnu.org>1997-02-11 20:53:36 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>1997-02-11 20:53:36 +0000
commitcf641ce6cced9835f60dc4f353c55f545a45207b (patch)
treecd4236fc24dd64ec7f173db1e8741e30cf83286d
parentf3e9068e0ad8cde02aba80ff04df52430a97023f (diff)
downloadgcc-cf641ce6cced9835f60dc4f353c55f545a45207b.zip
gcc-cf641ce6cced9835f60dc4f353c55f545a45207b.tar.gz
gcc-cf641ce6cced9835f60dc4f353c55f545a45207b.tar.bz2
(calc_live_regs): need not save MACL/MACH when not live, and in leaf function.
From-SVN: r13627
-rw-r--r--gcc/config/sh/sh.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index 0ffdeae..0f3a94f 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -2590,10 +2590,9 @@ calc_live_regs (count_ptr, live_regs_mask2)
{
/* Need to save all the regs ever live. */
if ((regs_ever_live[reg]
- || (call_used_regs[reg] && ! fixed_regs[reg]
- && regs_ever_live[PR_REG])
- || reg == MACH_REG
- || reg == MACL_REG)
+ || (call_used_regs[reg]
+ && (! fixed_regs[reg] || reg == MACH_REG || reg == MACL_REG)
+ && regs_ever_live[PR_REG]))
&& reg != STACK_POINTER_REGNUM && reg != ARG_POINTER_REGNUM
&& reg != RETURN_ADDRESS_POINTER_REGNUM
&& reg != T_REG && reg != GBR_REG)