aboutsummaryrefslogtreecommitdiff
path: root/gcc/doc/tm.texi
diff options
context:
space:
mode:
authorJ"orn Rennecke <amylaar@redhat.com>2001-09-21 00:45:30 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>2001-09-21 01:45:30 +0100
commit385b6e2d89aafa6135634bf661b1b559dedc8de8 (patch)
tree17d728b05bed014f8620fd0df4576c3c1a968f86 /gcc/doc/tm.texi
parenta4b5b2ae8d59dbaf8c855590cbd78ad3f5c47b64 (diff)
downloadgcc-385b6e2d89aafa6135634bf661b1b559dedc8de8.zip
gcc-385b6e2d89aafa6135634bf661b1b559dedc8de8.tar.gz
gcc-385b6e2d89aafa6135634bf661b1b559dedc8de8.tar.bz2
integrate.c (allocate_initial_values): New function.
* integrate.c (allocate_initial_values): New function. * integrate.h (allocate_initial_values): Declare. * local-alloc.c (local_alloc): Move call to allocate_reg_info from here... * reload1.c (reload): And initialization of reg_equiv_memory_loc from here... * toplev.c (rest_of_compilation): To here. Call allocate_initial_values. * tm.texi: add description for ALLOCATE_INITIAL_VALUE. From-SVN: r45716
Diffstat (limited to 'gcc/doc/tm.texi')
-rw-r--r--gcc/doc/tm.texi20
1 files changed, 20 insertions, 0 deletions
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi
index edc2f3c..71e4cd9 100644
--- a/gcc/doc/tm.texi
+++ b/gcc/doc/tm.texi
@@ -8760,4 +8760,24 @@ On some targets, branches may have a limited range. Optimizing the
filling of delay slots can result in branches being redirected, and this
may in turn cause a branch offset to overflow.
+@findex ALLOCATE_INITIAL_VALUE
+@item ALLOCATE_INITIAL_VALUE(@var{hard_reg})
+
+When the initial value of a hard register has been copied in a pseudo
+register, it is often not necessary to actually allocate a another register
+to this pseudo register, because the original hard register or a stack slot
+it has been saved into can be used. @code{ALLOCATE_INITIAL_VALUE}, if
+defined, is called at the start of register allocation once for each
+hard register that had its initial value copied by using
+@code{get_func_hard_reg_initial_val} or @code{get_hard_reg_initial_val}.
+Possible values are @code{NULL_RTX}, if you don't want
+to do any special allocation, a @code{REG} rtx---that would typically be
+the hard register itself, if it is known not to be clobbered---or a
+@code{MEM}.
+If you are returning a @code{MEM}, this is only a hint for the allocator;
+it might decide to use another register anyways.
+You may use @code{current_function_leaf_function} in the definition of the
+macro, functions that use @code{REG_N_SETS}, to determine if the hard
+register in question will not be clobbered.
+
@end table