Commit eadceb59 by Richard Kenner

(sparc_builtin_saveregs): If -fcheck-memory-usage, set rights of saved

registers.

From-SVN: r14624
parent 5e32727c
...@@ -3454,6 +3454,20 @@ sparc_builtin_saveregs (arglist) ...@@ -3454,6 +3454,20 @@ sparc_builtin_saveregs (arglist)
gen_rtx (REG, DFmode, gen_rtx (REG, DFmode,
BASE_INCOMING_ARG_REG (DFmode) + regno)); BASE_INCOMING_ARG_REG (DFmode) + regno));
if (flag_check_memory_usage)
{
emit_library_call (chkr_set_right_libfunc, 1, VOIDmode, 3, regbuf,
ptr_mode, GEN_INT (n_intregs * UNITS_PER_WORD),
TYPE_MODE (sizetype), GEN_INT (MEMORY_USE_RW), QImode);
emit_library_call (chkr_set_right_libfunc, 1, VOIDmode, 3,
fpregs, ptr_mode,
GEN_INT (UNITS_PER_WORD
* GET_MODE_SIZE (SFmode)
* (NPARM_REGS (SFmode) - first_floatreg)),
TYPE_MODE (sizetype), GEN_INT (MEMORY_USE_RW), QImode);
}
/* Return the address of the regbuf. */ /* Return the address of the regbuf. */
return XEXP (regbuf, 0); return XEXP (regbuf, 0);
...@@ -3493,6 +3507,13 @@ sparc_builtin_saveregs (arglist) ...@@ -3493,6 +3507,13 @@ sparc_builtin_saveregs (arglist)
GEN_INT (STACK_POINTER_OFFSET GEN_INT (STACK_POINTER_OFFSET
+ UNITS_PER_WORD * first_reg)); + UNITS_PER_WORD * first_reg));
if (flag_check_memory_usage)
emit_library_call (chkr_set_right_libfunc, 1, VOIDmode, 3,
address, ptr_mode,
GEN_INT (UNITS_PER_WORD
* (NPARM_REGS (SImode) - first_reg)),
TYPE_MODE (sizetype), GEN_INT (MEMORY_USE_RW), QImode);
return address; return address;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment