From e1ce1485c85cf2ea659a92ccddf9305fc2ff3c00 Mon Sep 17 00:00:00 2001 From: aesok Date: Sun, 2 May 2010 10:49:10 +0000 Subject: * target.h (struct calls): Add function_value_regno_p field. * target-def.h (TARGET_FUNCTION_VALUE_REGNO_P): Define. (TARGET_INITIALIZER): Use TARGET_FUNCTION_VALUE_REGNO_P. * targhooks.c (default_function_value_regno_p): New function. * targhooks.h (default_function_value_regno_p): Declare function. * rtlanal.c (keep_with_call_p): Use function_value_regno_p hook. * builtins.c. (apply_result_size): (Ditto.). * combine.c. (likely_spilled_retval_p): (Ditto.). * mode-switching.c. Include 'target.h'. (create_pre_exit): Use function_value_regno_p hook. * Makefile.in (mode-switching.o): Add dependency on TARGET_H. * doc/tm.texi (FUNCTION_VALUE_REGNO_P, TARGET_FUNCTION_VALUE_REGNO_P): Revise documentation. * config/i386/i386.h (TARGET_FUNCTION_VALUE_REGNO_P): Remove macro. * config/i386/i386.c (TARGET_FUNCTION_VALUE_REGNO_P): Define macro. (ix86_function_value_regno_p): Declare as static, change argument type to const unsigned int. * config/i386/i386-protos.h (ix86_function_value_regno_p): Remove. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158970 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/mode-switching.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'gcc/mode-switching.c') diff --git a/gcc/mode-switching.c b/gcc/mode-switching.c index 140c513918e..30051c6ea24 100644 --- a/gcc/mode-switching.c +++ b/gcc/mode-switching.c @@ -22,6 +22,7 @@ along with GCC; see the file COPYING3. If not see #include "system.h" #include "coretypes.h" #include "tm.h" +#include "target.h" #include "rtl.h" #include "regs.h" #include "hard-reg-set.h" @@ -262,7 +263,7 @@ create_pre_exit (int n_entities, int *entity_map, const int *num_modes) case USE: /* Skip __builtin_apply pattern. */ if (GET_CODE (XEXP (return_copy_pat, 0)) == REG - && (FUNCTION_VALUE_REGNO_P + && (targetm.calls.function_value_regno_p (REGNO (XEXP (return_copy_pat, 0))))) { maybe_builtin_apply = 1; @@ -359,7 +360,8 @@ create_pre_exit (int n_entities, int *entity_map, const int *num_modes) && copy_start + copy_num <= ret_end) nregs -= copy_num; else if (!maybe_builtin_apply - || !FUNCTION_VALUE_REGNO_P (copy_start)) + || !targetm.calls.function_value_regno_p + (copy_start)) break; last_insn = return_copy; } -- cgit v1.2.1