diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1997-08-02 13:25:31 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1997-08-02 13:25:31 -0400 |
commit | eadceb598a8e7ec27f6a0c44c6f2e4200c40a482 (patch) | |
tree | a22e382c5aae82a48faf17cce4eae2b2256d2786 | |
parent | 5e32727ccc4b252f1b8c7500d9dbe6fa6d165070 (diff) | |
download | gcc-eadceb598a8e7ec27f6a0c44c6f2e4200c40a482.zip gcc-eadceb598a8e7ec27f6a0c44c6f2e4200c40a482.tar.gz gcc-eadceb598a8e7ec27f6a0c44c6f2e4200c40a482.tar.bz2 |
(sparc_builtin_saveregs): If -fcheck-memory-usage, set rights of saved
registers.
From-SVN: r14624
-rw-r--r-- | gcc/config/sparc/sparc.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c index ead4da0..4235c93 100644 --- a/gcc/config/sparc/sparc.c +++ b/gcc/config/sparc/sparc.c @@ -3454,6 +3454,20 @@ sparc_builtin_saveregs (arglist) gen_rtx (REG, DFmode, 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 XEXP (regbuf, 0); @@ -3493,6 +3507,13 @@ sparc_builtin_saveregs (arglist) GEN_INT (STACK_POINTER_OFFSET + 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; } |