From: Jim Wilson Date: Mon, 12 Aug 1996 21:43:22 +0000 (-0700) Subject: (regno_reg_class): Change entry 23 from NO_REGS to GENERAL_REGS. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2afeea0fa3280a0fc50945b4d4c3eec30475a0c6;p=gcc.git (regno_reg_class): Change entry 23 from NO_REGS to GENERAL_REGS. (initial_elimination_offset): New variable live_regs_mask. Add code to handle RETURN_ADDRESS_POINTER_REGNUM. From-SVN: r12627 --- diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index 834e60bf382..f7625a4a3dc 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -84,7 +84,7 @@ int regno_reg_class[FIRST_PSEUDO_REGISTER] = GENERAL_REGS, GENERAL_REGS, GENERAL_REGS, GENERAL_REGS, GENERAL_REGS, GENERAL_REGS, GENERAL_REGS, GENERAL_REGS, GENERAL_REGS, PR_REGS, T_REGS, NO_REGS, - MAC_REGS, MAC_REGS, FPUL_REGS, NO_REGS, + MAC_REGS, MAC_REGS, FPUL_REGS, GENERAL_REGS, FP0_REGS,FP_REGS, FP_REGS, FP_REGS, FP_REGS, FP_REGS, FP_REGS, FP_REGS, FP_REGS, FP_REGS, FP_REGS, FP_REGS, @@ -2074,8 +2074,8 @@ initial_elimination_offset (from, to) int total_saved_regs_space; int total_auto_space = get_frame_size (); - int live_regs_mask2; - calc_live_regs (®s_saved, &live_regs_mask2); + int live_regs_mask, live_regs_mask2; + live_regs_mask = calc_live_regs (®s_saved, &live_regs_mask2); total_saved_regs_space = (regs_saved) * 4; @@ -2089,6 +2089,19 @@ initial_elimination_offset (from, to) if (from == FRAME_POINTER_REGNUM && to == STACK_POINTER_REGNUM) return 0; + if (from == RETURN_ADDRESS_POINTER_REGNUM + && (to == FRAME_POINTER_REGNUM || to == STACK_POINTER_REGNUM)) + { + int i, n = 0; + for (i = PR_REG+1; i < 32; i++) + if (live_regs_mask & (1 << i)) + n += 4; + for (i = 32; i < FIRST_PSEUDO_REGISTER; i++) + if (live_regs_mask2 & (1 << (i - 32))) + n += 4; + return n + total_auto_space; + } + abort (); }