aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/clipper
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1997-08-02 13:22:50 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1997-08-02 13:22:50 -0400
commite72f998d695bfdaa608ea49d8b0f6438b563e282 (patch)
tree4fc62817daea95e92d7d65dc1aecb1bd5e25f986 /gcc/config/clipper
parent5b838011fe8f31b03f2194d2d93cd1f8ea7300e1 (diff)
downloadgcc-e72f998d695bfdaa608ea49d8b0f6438b563e282.zip
gcc-e72f998d695bfdaa608ea49d8b0f6438b563e282.tar.gz
gcc-e72f998d695bfdaa608ea49d8b0f6438b563e282.tar.bz2
(clipper_builtin_saveregs): If -fcheck-memory-usage, set rights of
saved registers. From-SVN: r14621
Diffstat (limited to 'gcc/config/clipper')
-rw-r--r--gcc/config/clipper/clipper.c26
1 files changed, 23 insertions, 3 deletions
diff --git a/gcc/config/clipper/clipper.c b/gcc/config/clipper/clipper.c
index 9ee6f44..20da229 100644
--- a/gcc/config/clipper/clipper.c
+++ b/gcc/config/clipper/clipper.c
@@ -1,6 +1,5 @@
/* Subroutines for insn-output.c for Clipper
- Copyright (C) 1987, 1988, 1991 Free Software Foundation, Inc.
-
+ Copyright (C) 1987, 1988, 1991, 1997 Free Software Foundation, Inc.
Contributed by Holger Teutsch (holger@hotbso.rhein-main.de)
This file is part of GNU CC.
@@ -438,10 +437,31 @@ clipper_builtin_saveregs (arglist)
gen_rtx (CONST_INT, Pmode, 16))),
scratch);
+
+ if (flag_check_memory_usage)
+ {
+ emit_library_call (chkr_set_right_libfunc, 1, VOIDmode, 3, addr,
+ ptr_mode, GEN_INT (5 * GET_MODE_SIZE (SImode)),
+ TYPE_MODE (sizetype),
+ GEN_INT (MEMORY_USE_RW), QImode);
+
+ emit_library_call (chkr_set_right_libfunc, 1, VOIDmode, 3, f0_addr,
+ ptr_mode, GEN_INT (GET_MODE_SIZE (DFmode)),
+ TYPE_MODE (sizetype), GEN_INT (MEMORY_USE_RW), QImode);
+ emit_library_call (chkr_set_right_libfunc, 1, VOIDmode, 3, f1_addr,
+ ptr_mode, GEN_INT (GET_MODE_SIZE (DFmode)),
+ TYPE_MODE (sizetype), GEN_INT (MEMORY_USE_RW), QImode);
+ emit_library_call (chkr_set_right_libfunc, 1, VOIDmode, 3, r0_addr,
+ ptr_mode, GEN_INT (GET_MODE_SIZE (SImode)),
+ TYPE_MODE (sizetype), GEN_INT (MEMORY_USE_RW), QImode);
+ emit_library_call (chkr_set_right_libfunc, 1, VOIDmode, 3, r1_addr,
+ ptr_mode, GEN_INT (GET_MODE_SIZE (SImode)),
+ TYPE_MODE (sizetype), GEN_INT (MEMORY_USE_RW), QImode);
+ }
+
/* Return the address of the va_list constructor, but don't put it in a
register. This fails when not optimizing and produces worse code when
optimizing. */
-
return XEXP (block, 0);
}