tm.texi.in (TARGET_CLASS_LIKELY_SPILLED_P): Update documentation.

* doc/tm.texi.in (TARGET_CLASS_LIKELY_SPILLED_P): Update documentation.
	* doc/tm.texi: Regenerate.
	* regs.h (REG_LIVE_LENGTH): Update comments to not refer to no longer
	existing files global.c and local-alloc.c.
	* regmove.c (copy_src_to_dest): Likewise.
	* function.h (struct rtl_data): Likewise.
	* ira-color.c (allocno_priority_compare_func): Likewise.
	* regstat.c (regstat_compute_ri): Likewise.
	* config/epiphany/epiphany.h, config/vax/vax.h, config/cris/cris.h,
	config/h8300/h8300.h, config/alpha/alpha.h, config/sparc/sparc.h,
	config/rs6000/rs6000.h, config/pdp11/pdp11.h, config/pa/pa.h,
	config/v850/v850.h, config/mn10300/mn10300.h, config/m32r/m32r.h,
	config/i386/i386.h, config/mcore/mcore.h, config/sh/sh.h,
	config/arm/arm.h (REGNO_OK_FOR_BASE_P): Likewise.

From-SVN: r194229
This commit is contained in:
Steven Bosscher 2012-12-05 23:16:52 +00:00
parent 833fe7dadc
commit aeb9f7cf3c
24 changed files with 81 additions and 56 deletions

View File

@ -1,3 +1,20 @@
2012-12-05 Steven Bosscher <steven@gcc.gnu.org>
* doc/tm.texi.in (TARGET_CLASS_LIKELY_SPILLED_P): Update documentation.
* doc/tm.texi: Regenerate.
* regs.h (REG_LIVE_LENGTH): Update comments to not refer to no longer
existing files global.c and local-alloc.c.
* regmove.c (copy_src_to_dest): Likewise.
* function.h (struct rtl_data): Likewise.
* ira-color.c (allocno_priority_compare_func): Likewise.
* regstat.c (regstat_compute_ri): Likewise.
* config/epiphany/epiphany.h, config/vax/vax.h, config/cris/cris.h,
config/h8300/h8300.h, config/alpha/alpha.h, config/sparc/sparc.h,
config/rs6000/rs6000.h, config/pdp11/pdp11.h, config/pa/pa.h,
config/v850/v850.h, config/mn10300/mn10300.h, config/m32r/m32r.h,
config/i386/i386.h, config/mcore/mcore.h, config/sh/sh.h,
config/arm/arm.h (REGNO_OK_FOR_BASE_P): Likewise.
2012-12-05 Aldy Hernandez <aldyh@redhat.com>
PR target/54160

View File

@ -778,7 +778,8 @@ extern int alpha_memory_latency;
They give nonzero only if REGNO is a hard reg of the suitable class
or a pseudo reg currently allocated to a suitable hard reg.
Since they use reg_renumber, they are safe only once reg_renumber
has been allocated, which happens in local-alloc.c. */
has been allocated, which happens in reginfo.c during register
allocation. */
#define REGNO_OK_FOR_INDEX_P(REGNO) 0
#define REGNO_OK_FOR_BASE_P(REGNO) \

View File

@ -1730,7 +1730,8 @@ enum arm_auto_incmodes
They give nonzero only if REGNO is a hard reg of the suitable class
or a pseudo reg currently allocated to a suitable hard reg.
Since they use reg_renumber, they are safe only once reg_renumber
has been allocated, which happens in local-alloc.c. */
has been allocated, which happens in reginfo.c during register
allocation. */
#define TEST_REGNO(R, TEST, VALUE) \
((R TEST VALUE) || ((unsigned) reg_renumber[R] TEST VALUE))

View File

@ -577,7 +577,8 @@ enum reg_class
#define INDEX_REG_CLASS GENERAL_REGS
/* Since it uses reg_renumber, it is safe only once reg_renumber
has been allocated, which happens in local-alloc.c. */
has been allocated, which happens in reginfo.c during register
allocation. */
#define REGNO_OK_FOR_BASE_P(REGNO) \
((REGNO) <= CRIS_LAST_GENERAL_REGISTER \
|| (REGNO) == ARG_POINTER_REGNUM \

View File

@ -407,7 +407,8 @@ extern enum reg_class epiphany_regno_reg_class[FIRST_PSEUDO_REGISTER];
They give nonzero only if REGNO is a hard reg of the suitable class
or a pseudo reg currently allocated to a suitable hard reg.
Since they use reg_renumber, they are safe only once reg_renumber
has been allocated, which happens in local-alloc.c. */
has been allocated, which happens in reginfo.c during register
allocation. */
#define REGNO_OK_FOR_BASE_P(REGNO) \
((REGNO) < FIRST_PSEUDO_REGISTER || (unsigned) reg_renumber[REGNO] < FIRST_PSEUDO_REGISTER)
#define REGNO_OK_FOR_INDEX_P(REGNO) \

View File

@ -498,7 +498,8 @@ struct cum_arg
They give nonzero only if REGNO is a hard reg of the suitable class
or a pseudo reg currently allocated to a suitable hard reg.
Since they use reg_renumber, they are safe only once reg_renumber
has been allocated, which happens in local-alloc.c. */
has been allocated, which happens in reginfo.c during register
allocation. */
#define REGNO_OK_FOR_INDEX_P(regno) 0

View File

@ -1614,7 +1614,8 @@ typedef struct ix86_args {
They give nonzero only if REGNO is a hard reg of the suitable class
or a pseudo reg currently allocated to a suitable hard reg.
Since they use reg_renumber, they are safe only once reg_renumber
has been allocated, which happens in local-alloc.c. */
has been allocated, which happens in reginfo.c during register
allocation. */
#define REGNO_OK_FOR_INDEX_P(REGNO) \
((REGNO) < STACK_POINTER_REGNUM \

View File

@ -501,7 +501,8 @@ extern enum reg_class m32r_regno_reg_class[FIRST_PSEUDO_REGISTER];
They give nonzero only if REGNO is a hard reg of the suitable class
or a pseudo reg currently allocated to a suitable hard reg.
Since they use reg_renumber, they are safe only once reg_renumber
has been allocated, which happens in local-alloc.c. */
has been allocated, which happens in reginfo.c during register
allocation. */
#define REGNO_OK_FOR_BASE_P(REGNO) \
((REGNO) < FIRST_PSEUDO_REGISTER \
? GPR_P (REGNO) || (REGNO) == ARG_POINTER_REGNUM \

View File

@ -516,7 +516,8 @@ extern const enum reg_class regno_reg_class[FIRST_PSEUDO_REGISTER];
They give nonzero only if REGNO is a hard reg of the suitable class
or a pseudo reg currently allocated to a suitable hard reg.
Since they use reg_renumber, they are safe only once reg_renumber
has been allocated, which happens in local-alloc.c. */
has been allocated, which happens in reginfo.c during register
allocation. */
#define REGNO_OK_FOR_BASE_P(REGNO) \
((REGNO) < AP_REG || (unsigned) reg_renumber[(REGNO)] < AP_REG)

View File

@ -347,7 +347,8 @@ enum reg_class
They give nonzero only if REGNO is a hard reg of the suitable class
or a pseudo reg currently allocated to a suitable hard reg.
Since they use reg_renumber, they are safe only once reg_renumber
has been allocated, which happens in local-alloc.c. */
has been allocated, which happens in reginfo.c during register
allocation. */
#ifndef REG_OK_STRICT
# define REG_STRICT 0

View File

@ -750,7 +750,8 @@ extern int may_call_alloca;
They give nonzero only if X is a hard reg of the suitable class
or a pseudo reg currently allocated to a suitable hard reg.
Since they use reg_renumber, they are safe only once reg_renumber
has been allocated, which happens in local-alloc.c. */
has been allocated, which happens in reginfo.c during register
allocation. */
#define REGNO_OK_FOR_INDEX_P(X) \
((X) && ((X) < 32 \

View File

@ -400,7 +400,8 @@ extern int may_call_alloca;
They give nonzero only if REGNO is a hard reg of the suitable class
or a pseudo reg currently allocated to a suitable hard reg.
Since they use reg_renumber, they are safe only once reg_renumber
has been allocated, which happens in local-alloc.c. */
has been allocated, which happens in reginfo.c during register
allocation. */
#define REGNO_OK_FOR_BASE_P(REGNO) \
((REGNO) <= PC_REGNUM || (unsigned) reg_renumber[REGNO] <= PC_REGNUM || \

View File

@ -1729,7 +1729,8 @@ typedef struct rs6000_args
They give nonzero only if REGNO is a hard reg of the suitable class
or a pseudo reg currently allocated to a suitable hard reg.
Since they use reg_renumber, they are safe only once reg_renumber
has been allocated, which happens in local-alloc.c. */
has been allocated, which happens in reginfo.c during register
allocation. */
#define REGNO_OK_FOR_INDEX_P(REGNO) \
((REGNO) < FIRST_PSEUDO_REGISTER \

View File

@ -1618,7 +1618,8 @@ struct sh_args {
They give nonzero only if REGNO is a hard reg of the suitable class
or a pseudo reg currently allocated to a suitable hard reg.
Since they use reg_renumber, they are safe only once reg_renumber
has been allocated, which happens in local-alloc.c. */
has been allocated, which happens in reginfo.c during register
allocation. */
#define REGNO_OK_FOR_BASE_P(REGNO) \
(GENERAL_OR_AP_REGISTER_P (REGNO) \

View File

@ -1379,7 +1379,8 @@ do { \
They give nonzero only if REGNO is a hard reg of the suitable class
or a pseudo reg currently allocated to a suitable hard reg.
Since they use reg_renumber, they are safe only once reg_renumber
has been allocated, which happens in local-alloc.c. */
has been allocated, which happens in reginfo.c during register
allocation. */
#define REGNO_OK_FOR_INDEX_P(REGNO) \
(SPARC_INT_REG_P (REGNO) || SPARC_INT_REG_P (reg_renumber[REGNO]) \

View File

@ -354,7 +354,8 @@ enum reg_class
They give nonzero only if REGNO is a hard reg of the suitable class
or a pseudo reg currently allocated to a suitable hard reg.
Since they use reg_renumber, they are safe only once reg_renumber
has been allocated, which happens in local-alloc.c. */
has been allocated, which happens in reginfo.c during register
allocation. */
#define REGNO_OK_FOR_BASE_P(regno) \
(((regno) < FIRST_PSEUDO_REGISTER \

View File

@ -385,7 +385,8 @@ enum reg_class { NO_REGS, ALL_REGS, LIM_REG_CLASSES };
They give nonzero only if REGNO is a hard reg of the suitable class
or a pseudo reg currently allocated to a suitable hard reg.
Since they use reg_renumber, they are safe only once reg_renumber
has been allocated, which happens in local-alloc.c. */
has been allocated, which happens in reginfo.c during register
allocation. */
#define REGNO_OK_FOR_INDEX_P(regno) \
((regno) < FIRST_PSEUDO_REGISTER || reg_renumber[regno] >= 0)

View File

@ -2834,15 +2834,13 @@ 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.
default should be used. For generally register-starved machines, such as
i386, or machines with right register constraints, such as SH, this hook
can be used to avoid excessive spilling.
This hook is also used by some of the global intra-procedural code
transformations to throtle code motion, to avoid increasing register
pressure.
@end deftypefn
@deftypefn {Target Hook} {unsigned char} TARGET_CLASS_MAX_NREGS (reg_class_t @var{rclass}, enum machine_mode @var{mode})

View File

@ -2810,15 +2810,13 @@ 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.
default should be used. For generally register-starved machines, such as
i386, or machines with right register constraints, such as SH, this hook
can be used to avoid excessive spilling.
This hook is also used by some of the global intra-procedural code
transformations to throtle code motion, to avoid increasing register
pressure.
@end deftypefn
@hook TARGET_CLASS_MAX_NREGS

View File

@ -389,7 +389,8 @@ struct GTY(()) rtl_data {
bool arg_pointer_save_area_init;
/* Nonzero if current function must be given a frame pointer.
Set in global.c if anything is allocated on the stack there. */
Set in reload1.c or lra-eliminations.c if anything is allocated
on the stack there. */
bool frame_pointer_needed;
/* When set, expand should optimize for speed. */

View File

@ -2516,8 +2516,7 @@ improve_allocation (void)
}
}
/* Sort allocnos according to their priorities which are calculated
analogous to ones in file `global.c'. */
/* Sort allocnos according to their priorities. */
static int
allocno_priority_compare_func (const void *v1p, const void *v2p)
{

View File

@ -616,10 +616,10 @@ copy_src_to_dest (rtx insn, rtx src, rtx dest)
int src_regno;
int dest_regno;
/* A REG_LIVE_LENGTH of -1 indicates the register is equivalent to a constant
or memory location and is used infrequently; a REG_LIVE_LENGTH of -2 is
parameter when there is no frame pointer that is not allocated a register.
For now, we just reject them, rather than incrementing the live length. */
/* A REG_LIVE_LENGTH of -1 indicates the register must not go into
a hard register, e.g. because it crosses as setjmp. See the
comment in regstat.c:regstat_bb_compute_ri. Don't try to apply
any transformations to such regs. */
if (REG_P (src)
&& REG_LIVE_LENGTH (REGNO (src)) > 0

View File

@ -176,21 +176,17 @@ extern size_t reg_info_p_size;
#define REG_N_THROWING_CALLS_CROSSED(N) (reg_info_p[N].throw_calls_crossed)
/* Total number of instructions at which (REG n) is live. The larger
this is, the less priority (REG n) gets for allocation in a hard
register (in global-alloc). This is set in df-problems.c whenever
register info is requested and remains valid for the rest of the
compilation of the function; it is used to control register
allocation.
/* Total number of instructions at which (REG n) is live.
This is set in regstat.c whenever register info is requested and
remains valid for the rest of the compilation of the function; it is
used to control register allocation. The larger this is, the less
priority (REG n) gets for allocation in a hard register (in IRA in
priority-coloring mode).
local-alloc.c may alter this number to change the priority.
Negative values are special.
-1 is used to mark a pseudo reg which has a constant or memory equivalent
and is used infrequently enough that it should not get a hard register.
-2 is used to mark a pseudo reg for a parameter, when a frame pointer
is not required. global.c makes an allocno for this but does
not try to assign a hard register to it. */
Negative values are special: -1 is used to mark a pseudo reg that
should not be allocated to a hard register, because it crosses a
setjmp call. */
#define REG_LIVE_LENGTH(N) (reg_info_p[N].live_length)

View File

@ -389,7 +389,7 @@ regstat_compute_ri (void)
BITMAP_FREE (local_processed);
free (local_live_last_luid);
/* See the setjmp comment in regstat_ri_bb_compute. */
/* See the setjmp comment in regstat_bb_compute_ri. */
EXECUTE_IF_SET_IN_BITMAP (setjmp_crosses, FIRST_PSEUDO_REGISTER, regno, bi)
{
REG_BASIC_BLOCK (regno) = REG_BLOCK_UNKNOWN;