diff options
Diffstat (limited to 'gcc/doc/tm.texi')
-rw-r--r-- | gcc/doc/tm.texi | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index 98e6015..5e90208 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -2747,29 +2747,27 @@ Do not define this macro if you do not define @code{SECONDARY_MEMORY_NEEDED}. @end defmac -@defmac SECONDARY_MEMORY_NEEDED_MODE (@var{mode}) -When the compiler needs a secondary memory location to copy between two -registers of mode @var{mode}, it normally allocates sufficient memory to -hold a quantity of @code{BITS_PER_WORD} bits and performs the store and -load operations in a mode that many bits wide and whose class is the -same as that of @var{mode}. - -This is right thing to do on most machines because it ensures that all -bits of the register are copied and prevents accesses to the registers -in a narrower mode, which some machines prohibit for floating-point -registers. +@deftypefn {Target Hook} machine_mode TARGET_SECONDARY_MEMORY_NEEDED_MODE (machine_mode @var{mode}) +If @code{SECONDARY_MEMORY_NEEDED} tells the compiler to use memory +when moving between two particular registers of mode @var{mode}, +this hook specifies the mode that the memory should have. + +The default depends on @code{TARGET_LRA_P}. Without LRA, the default +is to use a word-sized mode for integral modes that are smaller than a +a word. This is right thing to do on most machines because it ensures +that all bits of the register are copied and prevents accesses to the +registers in a narrower mode, which some machines prohibit for +floating-point registers. However, this default behavior is not correct on some machines, such as the DEC Alpha, that store short integers in floating-point registers differently than in integer registers. On those machines, the default -widening will not work correctly and you must define this macro to -suppress that widening in some cases. See the file @file{alpha.h} for +widening will not work correctly and you must define this hook to +suppress that widening in some cases. See the file @file{alpha.c} for details. -Do not define this macro if you do not define -@code{SECONDARY_MEMORY_NEEDED} or if widening @var{mode} to a mode that -is @code{BITS_PER_WORD} bits wide is correct for your machine. -@end defmac +With LRA, the default is to use @var{mode} unmodified. +@end deftypefn @deftypefn {Target Hook} bool TARGET_CLASS_LIKELY_SPILLED_P (reg_class_t @var{rclass}) A target hook which returns @code{true} if pseudos that have been assigned |