aboutsummaryrefslogtreecommitdiff
path: root/gcc/targhooks.c
diff options
context:
space:
mode:
authorAnatoly Sokolov <aesok@post.ru>2010-09-02 14:29:37 +0000
committerAnatoly Sokolov <aesok@post.ru>2010-09-02 14:29:37 +0000
commitdecac150a0db0ed01e34aff544d77de8f119df37 (patch)
tree8800ae6420f6689c40bea9995085ad6bf47c0f65 /gcc/targhooks.c
parentbbe894b0f103b0a19bbc047ea4893508f4c74fbe (diff)
* target.def (class_likely_spilled_p): New hook.
* doc/tm.texi.in (TARGET_CLASS_LIKELY_SPILLED_P): Document. * doc/tm.texi: Regenerate. * targhooks.c (default_class_likely_spilled_p): New function. * targhooks.h (default_class_likely_spilled_p): Declare. * regs.h (CLASS_LIKELY_SPILLED_P): Remove. * combine.c: (cant_combine_insn_p, likely_spilled_retval_p): Use TARGET_CLASS_LIKELY_SPILLED_P target hook. Use HARD_REGISTER_P macro. Use fixed_reg_set instead of fixed_regs. * cse.c (hash_rtx_cb): Use TARGET_CLASS_LIKELY_SPILLED_P target hook. * calls.c (avoid_likely_spilled_reg): Ditto. * ira-conflicts.c: (ira_build_conflicts): Ditto. * ira.c (update_equiv_regs): Ditto. * mode-switching.c (create_pre_exit): Ditto. * regmove.c (find_matches): Ditto. (regclass_compatible_p): Use TARGET_CLASS_LIKELY_SPILLED_P target hook. * reload.c (SMALL_REGISTER_CLASS_P): Remove macro. (small_register_class_p): New inline function. (push_secondary_reload, find_reusable_reload, find_reloads): Use small_register_class_p instead of SMALL_REGISTER_CLASS_P. * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Remove. * config/i386/i386.c (ix86_class_likely_spilled_p): New. (TARGET_CLASS_LIKELY_SPILLED_P): Define. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@163779 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/targhooks.c')
-rw-r--r--gcc/targhooks.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/targhooks.c b/gcc/targhooks.c
index f8cb52227ce..a0e24c06ae7 100644
--- a/gcc/targhooks.c
+++ b/gcc/targhooks.c
@@ -1220,4 +1220,16 @@ default_profile_before_prologue (void)
#endif
}
+/* The default implementation of TARGET_CLASS_LIKELY_SPILLED_P. */
+
+bool
+default_class_likely_spilled_p (reg_class_t rclass)
+{
+#ifndef CLASS_LIKELY_SPILLED_P
+ return (reg_class_size[(int) rclass] == 1);
+#else
+ return CLASS_LIKELY_SPILLED_P ((enum reg_class) rclass);
+#endif
+}
+
#include "gt-targhooks.h"