aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1996-07-08 15:33:09 -0700
committerJim Wilson <wilson@gcc.gnu.org>1996-07-08 15:33:09 -0700
commit20fef67b3a838159549878ac4436e748d4f446dc (patch)
treee16d327ca1dc332d5aa2e2a490a595481a138b03 /gcc
parent2b4092f276fb36dec91e680adde30c6be13248fd (diff)
downloadgcc-20fef67b3a838159549878ac4436e748d4f446dc.zip
gcc-20fef67b3a838159549878ac4436e748d4f446dc.tar.gz
gcc-20fef67b3a838159549878ac4436e748d4f446dc.tar.bz2
(calc_live_regs): For pragma_interrupt case...
(calc_live_regs): For pragma_interrupt case, exclude call clobbered regs that are fixed, explicitly add MACH_REG and MACL_REG. From-SVN: r12415
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/sh/sh.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index 7e0d8cc..33fc6ac 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -1879,7 +1879,10 @@ 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] && regs_ever_live[PR_REG]))
+ || (call_used_regs[reg] && ! fixed_regs[reg]
+ && regs_ever_live[PR_REG])
+ || reg == MACH_REG
+ || reg == MACL_REG)
&& reg != STACK_POINTER_REGNUM && reg != ARG_POINTER_REGNUM
&& reg != T_REG && reg != GBR_REG)
{