diff options
author | aesok <aesok@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-05-02 10:49:10 +0000 |
---|---|---|
committer | aesok <aesok@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-05-02 10:49:10 +0000 |
commit | e1ce1485c85cf2ea659a92ccddf9305fc2ff3c00 (patch) | |
tree | 135035b83149e0071966cf5b87b3d84d1448ce95 /gcc/mode-switching.c | |
parent | 6cd9a8733290b42109486fd799a07cc810f4d6a1 (diff) | |
download | gcc-e1ce1485c85cf2ea659a92ccddf9305fc2ff3c00.tar.gz |
* 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
Diffstat (limited to 'gcc/mode-switching.c')
-rw-r--r-- | gcc/mode-switching.c | 6 |
1 files changed, 4 insertions, 2 deletions
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; } |