diff options
author | Joern Rennecke <amylaar@gcc.gnu.org> | 1997-02-11 20:53:36 +0000 |
---|---|---|
committer | Joern Rennecke <amylaar@gcc.gnu.org> | 1997-02-11 20:53:36 +0000 |
commit | cf641ce6cced9835f60dc4f353c55f545a45207b (patch) | |
tree | cd4236fc24dd64ec7f173db1e8741e30cf83286d | |
parent | f3e9068e0ad8cde02aba80ff04df52430a97023f (diff) | |
download | gcc-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.c | 7 |
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) |