aboutsummaryrefslogtreecommitdiff
path: root/gcc/doc/tm.texi.in
diff options
context:
space:
mode:
authorAnatoly Sokolov <aesok@post.ru>2010-09-02 18:29:37 +0400
committerAnatoly Sokolov <aesok@gcc.gnu.org>2010-09-02 18:29:37 +0400
commit07b8f0a812a056b69fcaf00bde67aa74b5b02397 (patch)
tree8800ae6420f6689c40bea9995085ad6bf47c0f65 /gcc/doc/tm.texi.in
parent844022b747eebc8f02c0e7b4165cc10b7521432e (diff)
downloadgcc-07b8f0a812a056b69fcaf00bde67aa74b5b02397.zip
gcc-07b8f0a812a056b69fcaf00bde67aa74b5b02397.tar.gz
gcc-07b8f0a812a056b69fcaf00bde67aa74b5b02397.tar.bz2
target.def (class_likely_spilled_p): New hook.
* 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. From-SVN: r163779
Diffstat (limited to 'gcc/doc/tm.texi.in')
-rw-r--r--gcc/doc/tm.texi.in18
1 files changed, 18 insertions, 0 deletions
diff --git a/gcc/doc/tm.texi.in b/gcc/doc/tm.texi.in
index f0bdf68..24f5c1b3 100644
--- a/gcc/doc/tm.texi.in
+++ b/gcc/doc/tm.texi.in
@@ -2858,6 +2858,24 @@ Do not define this macro if you do not define
is @code{BITS_PER_WORD} bits wide is correct for your machine.
@end defmac
+@hook TARGET_CLASS_LIKELY_SPILLED_P
+A target hook which returns @code{true} if pseudos that have been assigned
+to registers of class @var{rclass} would likely be spilled because
+registers of @var{rclass} are needed for spill registers.
+
+The default version of this target hook returns @code{true} if @var{rclass}
+has exactly one register and @code{false} otherwise. On most machines, this
+default should be used. Only use this target hook to some other expression
+if pseudos allocated by @file{local-alloc.c} end up in memory because their
+hard registers were needed for spill registers. If this target hook returns
+@code{false} for those classes, those pseudos will only be allocated by
+@file{global.c}, which knows how to reallocate the pseudo to another
+register. If there would not be another register available for reallocation,
+you should not change the implementation of this target hook since
+the only effect of such implementation would be to slow down register
+allocation.
+@end deftypefn
+
@defmac CLASS_LIKELY_SPILLED_P (@var{class})
A C expression whose value is nonzero if pseudos that have been assigned
to registers of class @var{class} would likely be spilled because