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:
parent
833fe7dadc
commit
aeb9f7cf3c
|
@ -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>
|
2012-12-05 Aldy Hernandez <aldyh@redhat.com>
|
||||||
|
|
||||||
PR target/54160
|
PR target/54160
|
||||||
|
|
|
@ -778,7 +778,8 @@ extern int alpha_memory_latency;
|
||||||
They give nonzero only if REGNO is a hard reg of the suitable 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.
|
or a pseudo reg currently allocated to a suitable hard reg.
|
||||||
Since they use reg_renumber, they are safe only once reg_renumber
|
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_INDEX_P(REGNO) 0
|
||||||
#define REGNO_OK_FOR_BASE_P(REGNO) \
|
#define REGNO_OK_FOR_BASE_P(REGNO) \
|
||||||
|
|
|
@ -1730,7 +1730,8 @@ enum arm_auto_incmodes
|
||||||
They give nonzero only if REGNO is a hard reg of the suitable 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.
|
or a pseudo reg currently allocated to a suitable hard reg.
|
||||||
Since they use reg_renumber, they are safe only once reg_renumber
|
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) \
|
#define TEST_REGNO(R, TEST, VALUE) \
|
||||||
((R TEST VALUE) || ((unsigned) reg_renumber[R] TEST VALUE))
|
((R TEST VALUE) || ((unsigned) reg_renumber[R] TEST VALUE))
|
||||||
|
|
||||||
|
|
|
@ -577,7 +577,8 @@ enum reg_class
|
||||||
#define INDEX_REG_CLASS GENERAL_REGS
|
#define INDEX_REG_CLASS GENERAL_REGS
|
||||||
|
|
||||||
/* Since it uses reg_renumber, it is safe only once reg_renumber
|
/* 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) \
|
#define REGNO_OK_FOR_BASE_P(REGNO) \
|
||||||
((REGNO) <= CRIS_LAST_GENERAL_REGISTER \
|
((REGNO) <= CRIS_LAST_GENERAL_REGISTER \
|
||||||
|| (REGNO) == ARG_POINTER_REGNUM \
|
|| (REGNO) == ARG_POINTER_REGNUM \
|
||||||
|
|
|
@ -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
|
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.
|
or a pseudo reg currently allocated to a suitable hard reg.
|
||||||
Since they use reg_renumber, they are safe only once reg_renumber
|
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) \
|
#define REGNO_OK_FOR_BASE_P(REGNO) \
|
||||||
((REGNO) < FIRST_PSEUDO_REGISTER || (unsigned) reg_renumber[REGNO] < FIRST_PSEUDO_REGISTER)
|
((REGNO) < FIRST_PSEUDO_REGISTER || (unsigned) reg_renumber[REGNO] < FIRST_PSEUDO_REGISTER)
|
||||||
#define REGNO_OK_FOR_INDEX_P(REGNO) \
|
#define REGNO_OK_FOR_INDEX_P(REGNO) \
|
||||||
|
|
|
@ -498,7 +498,8 @@ struct cum_arg
|
||||||
They give nonzero only if REGNO is a hard reg of the suitable 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.
|
or a pseudo reg currently allocated to a suitable hard reg.
|
||||||
Since they use reg_renumber, they are safe only once reg_renumber
|
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_INDEX_P(regno) 0
|
||||||
|
|
||||||
|
|
|
@ -1614,7 +1614,8 @@ typedef struct ix86_args {
|
||||||
They give nonzero only if REGNO is a hard reg of the suitable 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.
|
or a pseudo reg currently allocated to a suitable hard reg.
|
||||||
Since they use reg_renumber, they are safe only once reg_renumber
|
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) \
|
#define REGNO_OK_FOR_INDEX_P(REGNO) \
|
||||||
((REGNO) < STACK_POINTER_REGNUM \
|
((REGNO) < STACK_POINTER_REGNUM \
|
||||||
|
|
|
@ -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
|
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.
|
or a pseudo reg currently allocated to a suitable hard reg.
|
||||||
Since they use reg_renumber, they are safe only once reg_renumber
|
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) \
|
#define REGNO_OK_FOR_BASE_P(REGNO) \
|
||||||
((REGNO) < FIRST_PSEUDO_REGISTER \
|
((REGNO) < FIRST_PSEUDO_REGISTER \
|
||||||
? GPR_P (REGNO) || (REGNO) == ARG_POINTER_REGNUM \
|
? GPR_P (REGNO) || (REGNO) == ARG_POINTER_REGNUM \
|
||||||
|
|
|
@ -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
|
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.
|
or a pseudo reg currently allocated to a suitable hard reg.
|
||||||
Since they use reg_renumber, they are safe only once reg_renumber
|
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) \
|
#define REGNO_OK_FOR_BASE_P(REGNO) \
|
||||||
((REGNO) < AP_REG || (unsigned) reg_renumber[(REGNO)] < AP_REG)
|
((REGNO) < AP_REG || (unsigned) reg_renumber[(REGNO)] < AP_REG)
|
||||||
|
|
||||||
|
|
|
@ -347,7 +347,8 @@ enum reg_class
|
||||||
They give nonzero only if REGNO is a hard reg of the suitable 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.
|
or a pseudo reg currently allocated to a suitable hard reg.
|
||||||
Since they use reg_renumber, they are safe only once reg_renumber
|
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
|
#ifndef REG_OK_STRICT
|
||||||
# define REG_STRICT 0
|
# define REG_STRICT 0
|
||||||
|
|
|
@ -750,7 +750,8 @@ extern int may_call_alloca;
|
||||||
They give nonzero only if X is a hard reg of the suitable class
|
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.
|
or a pseudo reg currently allocated to a suitable hard reg.
|
||||||
Since they use reg_renumber, they are safe only once reg_renumber
|
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) \
|
#define REGNO_OK_FOR_INDEX_P(X) \
|
||||||
((X) && ((X) < 32 \
|
((X) && ((X) < 32 \
|
||||||
|
|
|
@ -400,7 +400,8 @@ extern int may_call_alloca;
|
||||||
They give nonzero only if REGNO is a hard reg of the suitable 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.
|
or a pseudo reg currently allocated to a suitable hard reg.
|
||||||
Since they use reg_renumber, they are safe only once reg_renumber
|
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) \
|
#define REGNO_OK_FOR_BASE_P(REGNO) \
|
||||||
((REGNO) <= PC_REGNUM || (unsigned) reg_renumber[REGNO] <= PC_REGNUM || \
|
((REGNO) <= PC_REGNUM || (unsigned) reg_renumber[REGNO] <= PC_REGNUM || \
|
||||||
|
|
|
@ -1729,7 +1729,8 @@ typedef struct rs6000_args
|
||||||
They give nonzero only if REGNO is a hard reg of the suitable 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.
|
or a pseudo reg currently allocated to a suitable hard reg.
|
||||||
Since they use reg_renumber, they are safe only once reg_renumber
|
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) \
|
#define REGNO_OK_FOR_INDEX_P(REGNO) \
|
||||||
((REGNO) < FIRST_PSEUDO_REGISTER \
|
((REGNO) < FIRST_PSEUDO_REGISTER \
|
||||||
|
|
|
@ -1618,7 +1618,8 @@ struct sh_args {
|
||||||
They give nonzero only if REGNO is a hard reg of the suitable 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.
|
or a pseudo reg currently allocated to a suitable hard reg.
|
||||||
Since they use reg_renumber, they are safe only once reg_renumber
|
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) \
|
#define REGNO_OK_FOR_BASE_P(REGNO) \
|
||||||
(GENERAL_OR_AP_REGISTER_P (REGNO) \
|
(GENERAL_OR_AP_REGISTER_P (REGNO) \
|
||||||
|
|
|
@ -1379,7 +1379,8 @@ do { \
|
||||||
They give nonzero only if REGNO is a hard reg of the suitable 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.
|
or a pseudo reg currently allocated to a suitable hard reg.
|
||||||
Since they use reg_renumber, they are safe only once reg_renumber
|
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) \
|
#define REGNO_OK_FOR_INDEX_P(REGNO) \
|
||||||
(SPARC_INT_REG_P (REGNO) || SPARC_INT_REG_P (reg_renumber[REGNO]) \
|
(SPARC_INT_REG_P (REGNO) || SPARC_INT_REG_P (reg_renumber[REGNO]) \
|
||||||
|
|
|
@ -354,7 +354,8 @@ enum reg_class
|
||||||
They give nonzero only if REGNO is a hard reg of the suitable 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.
|
or a pseudo reg currently allocated to a suitable hard reg.
|
||||||
Since they use reg_renumber, they are safe only once reg_renumber
|
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) \
|
#define REGNO_OK_FOR_BASE_P(regno) \
|
||||||
(((regno) < FIRST_PSEUDO_REGISTER \
|
(((regno) < FIRST_PSEUDO_REGISTER \
|
||||||
|
|
|
@ -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
|
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.
|
or a pseudo reg currently allocated to a suitable hard reg.
|
||||||
Since they use reg_renumber, they are safe only once reg_renumber
|
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) \
|
#define REGNO_OK_FOR_INDEX_P(regno) \
|
||||||
((regno) < FIRST_PSEUDO_REGISTER || reg_renumber[regno] >= 0)
|
((regno) < FIRST_PSEUDO_REGISTER || reg_renumber[regno] >= 0)
|
||||||
|
|
|
@ -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}
|
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
|
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
|
default should be used. For generally register-starved machines, such as
|
||||||
if pseudos allocated by @file{local-alloc.c} end up in memory because their
|
i386, or machines with right register constraints, such as SH, this hook
|
||||||
hard registers were needed for spill registers. If this target hook returns
|
can be used to avoid excessive spilling.
|
||||||
@code{false} for those classes, those pseudos will only be allocated by
|
|
||||||
@file{global.c}, which knows how to reallocate the pseudo to another
|
This hook is also used by some of the global intra-procedural code
|
||||||
register. If there would not be another register available for reallocation,
|
transformations to throtle code motion, to avoid increasing register
|
||||||
you should not change the implementation of this target hook since
|
pressure.
|
||||||
the only effect of such implementation would be to slow down register
|
|
||||||
allocation.
|
|
||||||
@end deftypefn
|
@end deftypefn
|
||||||
|
|
||||||
@deftypefn {Target Hook} {unsigned char} TARGET_CLASS_MAX_NREGS (reg_class_t @var{rclass}, enum machine_mode @var{mode})
|
@deftypefn {Target Hook} {unsigned char} TARGET_CLASS_MAX_NREGS (reg_class_t @var{rclass}, enum machine_mode @var{mode})
|
||||||
|
|
|
@ -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}
|
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
|
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
|
default should be used. For generally register-starved machines, such as
|
||||||
if pseudos allocated by @file{local-alloc.c} end up in memory because their
|
i386, or machines with right register constraints, such as SH, this hook
|
||||||
hard registers were needed for spill registers. If this target hook returns
|
can be used to avoid excessive spilling.
|
||||||
@code{false} for those classes, those pseudos will only be allocated by
|
|
||||||
@file{global.c}, which knows how to reallocate the pseudo to another
|
This hook is also used by some of the global intra-procedural code
|
||||||
register. If there would not be another register available for reallocation,
|
transformations to throtle code motion, to avoid increasing register
|
||||||
you should not change the implementation of this target hook since
|
pressure.
|
||||||
the only effect of such implementation would be to slow down register
|
|
||||||
allocation.
|
|
||||||
@end deftypefn
|
@end deftypefn
|
||||||
|
|
||||||
@hook TARGET_CLASS_MAX_NREGS
|
@hook TARGET_CLASS_MAX_NREGS
|
||||||
|
|
|
@ -389,7 +389,8 @@ struct GTY(()) rtl_data {
|
||||||
bool arg_pointer_save_area_init;
|
bool arg_pointer_save_area_init;
|
||||||
|
|
||||||
/* Nonzero if current function must be given a frame pointer.
|
/* 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;
|
bool frame_pointer_needed;
|
||||||
|
|
||||||
/* When set, expand should optimize for speed. */
|
/* When set, expand should optimize for speed. */
|
||||||
|
|
|
@ -2516,8 +2516,7 @@ improve_allocation (void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Sort allocnos according to their priorities which are calculated
|
/* Sort allocnos according to their priorities. */
|
||||||
analogous to ones in file `global.c'. */
|
|
||||||
static int
|
static int
|
||||||
allocno_priority_compare_func (const void *v1p, const void *v2p)
|
allocno_priority_compare_func (const void *v1p, const void *v2p)
|
||||||
{
|
{
|
||||||
|
|
|
@ -616,10 +616,10 @@ copy_src_to_dest (rtx insn, rtx src, rtx dest)
|
||||||
int src_regno;
|
int src_regno;
|
||||||
int dest_regno;
|
int dest_regno;
|
||||||
|
|
||||||
/* A REG_LIVE_LENGTH of -1 indicates the register is equivalent to a constant
|
/* A REG_LIVE_LENGTH of -1 indicates the register must not go into
|
||||||
or memory location and is used infrequently; a REG_LIVE_LENGTH of -2 is
|
a hard register, e.g. because it crosses as setjmp. See the
|
||||||
parameter when there is no frame pointer that is not allocated a register.
|
comment in regstat.c:regstat_bb_compute_ri. Don't try to apply
|
||||||
For now, we just reject them, rather than incrementing the live length. */
|
any transformations to such regs. */
|
||||||
|
|
||||||
if (REG_P (src)
|
if (REG_P (src)
|
||||||
&& REG_LIVE_LENGTH (REGNO (src)) > 0
|
&& REG_LIVE_LENGTH (REGNO (src)) > 0
|
||||||
|
|
22
gcc/regs.h
22
gcc/regs.h
|
@ -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)
|
#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
|
/* Total number of instructions at which (REG n) is live.
|
||||||
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.
|
|
||||||
|
|
||||||
local-alloc.c may alter this number to change the priority.
|
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).
|
||||||
|
|
||||||
Negative values are special.
|
Negative values are special: -1 is used to mark a pseudo reg that
|
||||||
-1 is used to mark a pseudo reg which has a constant or memory equivalent
|
should not be allocated to a hard register, because it crosses a
|
||||||
and is used infrequently enough that it should not get a hard register.
|
setjmp call. */
|
||||||
-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. */
|
|
||||||
|
|
||||||
#define REG_LIVE_LENGTH(N) (reg_info_p[N].live_length)
|
#define REG_LIVE_LENGTH(N) (reg_info_p[N].live_length)
|
||||||
|
|
||||||
|
|
|
@ -389,7 +389,7 @@ regstat_compute_ri (void)
|
||||||
BITMAP_FREE (local_processed);
|
BITMAP_FREE (local_processed);
|
||||||
free (local_live_last_luid);
|
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)
|
EXECUTE_IF_SET_IN_BITMAP (setjmp_crosses, FIRST_PSEUDO_REGISTER, regno, bi)
|
||||||
{
|
{
|
||||||
REG_BASIC_BLOCK (regno) = REG_BLOCK_UNKNOWN;
|
REG_BASIC_BLOCK (regno) = REG_BLOCK_UNKNOWN;
|
||||||
|
|
Loading…
Reference in New Issue