From: Richard Kenner Date: Sat, 2 Aug 1997 17:22:01 +0000 (-0400) Subject: (alpha_builtin_saveregs): If -fcheck-memory-usage, set rights of saved X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5b838011fe8f31b03f2194d2d93cd1f8ea7300e1;p=gcc.git (alpha_builtin_saveregs): If -fcheck-memory-usage, set rights of saved registers. From-SVN: r14620 --- diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index c918b5b47ed..de66e1dc287 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -1536,7 +1536,7 @@ struct rtx_def * alpha_builtin_saveregs (arglist) tree arglist; { - rtx block, addr, argsize; + rtx block, addr, dest, argsize; tree fntype = TREE_TYPE (current_function_decl); int stdarg = (TYPE_ARG_TYPES (fntype) != 0 && (TREE_VALUE (tree_last (TYPE_ARG_TYPES (fntype))) @@ -1591,14 +1591,28 @@ alpha_builtin_saveregs (arglist) /* Store the address of the first integer register in the __base member. */ - emit_move_insn (change_address (block, ptr_mode, XEXP (block, 0)), addr); + dest = change_address (block, ptr_mode, XEXP (block, 0)); + emit_move_insn (dest, addr); + if (flag_check_memory_usage) + emit_library_call (chkr_set_right_libfunc, 1, VOIDmode, 3, dest, + ptr_mode, GEN_INT (GET_MODE_SIZE (ptr_mode)), + TYPE_MODE (sizetype), + GEN_INT (MEMORY_USE_RW), QImode); + /* Store the argsize as the __va_offset member. */ - emit_move_insn - (change_address (block, TYPE_MODE (integer_type_node), - plus_constant (XEXP (block, 0), - POINTER_SIZE/BITS_PER_UNIT)), - argsize); + dest = change_address (block, TYPE_MODE (integer_type_node), + plus_constant (XEXP (block, 0), + POINTER_SIZE/BITS_PER_UNIT)); + emit_move_insn (dest, argsize); + + if (flag_check_memory_usage) + emit_library_call (chkr_set_right_libfunc, 1, VOIDmode, 3, dest, + ptr_mode, + GEN_INT (GET_MODE_SIZE + (TYPE_MODE (integer_type_node))), + 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. Doing so would fail when not optimizing and produce worse