mirror of
https://github.com/pret/agbcc.git
synced 2026-08-26 20:51:15 -05:00
remove some hard reg ifdefs
This commit is contained in:
10
gcc/global.c
10
gcc/global.c
@@ -990,11 +990,7 @@ find_reg (allocno, losers, alt_regs_p, accept_call_clobbered, retrying)
|
||||
|
||||
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
|
||||
{
|
||||
#ifdef REG_ALLOC_ORDER
|
||||
int regno = reg_alloc_order[i];
|
||||
#else
|
||||
int regno = i;
|
||||
#endif
|
||||
if (! TEST_HARD_REG_BIT (used, regno)
|
||||
&& HARD_REGNO_MODE_OK (regno, mode)
|
||||
&& (allocno_calls_crossed[allocno] == 0
|
||||
@@ -1012,9 +1008,7 @@ find_reg (allocno, losers, alt_regs_p, accept_call_clobbered, retrying)
|
||||
best_reg = regno;
|
||||
break;
|
||||
}
|
||||
#ifndef REG_ALLOC_ORDER
|
||||
i = j; /* Skip starting points we know will lose */
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1145,11 +1139,7 @@ find_reg (allocno, losers, alt_regs_p, accept_call_clobbered, retrying)
|
||||
/* Count from the end, to find the least-used ones first. */
|
||||
for (i = FIRST_PSEUDO_REGISTER - 1; i >= 0; i--)
|
||||
{
|
||||
#ifdef REG_ALLOC_ORDER
|
||||
int regno = reg_alloc_order[i];
|
||||
#else
|
||||
int regno = i;
|
||||
#endif
|
||||
|
||||
if (local_reg_n_refs[regno] != 0
|
||||
/* Don't use a reg no good for this pseudo. */
|
||||
|
||||
@@ -24,10 +24,8 @@ Boston, MA 02111-1307, USA. */
|
||||
/* HARD_REG_ELT_TYPE is a typedef of the unsigned integral type which
|
||||
will be used for hard reg sets, either alone or in an array.
|
||||
|
||||
If HARD_REG_SET is a macro, its definition is HARD_REG_ELT_TYPE,
|
||||
and it has enough bits to represent all the target machine's hard
|
||||
registers. Otherwise, it is a typedef for a suitably sized array
|
||||
of HARD_REG_ELT_TYPEs. HARD_REG_SET_LONGS is defined as how many.
|
||||
HARD_REG_SET is a macro. Its definition is HARD_REG_ELT_TYPE,
|
||||
and it has enough bits to represent all the THUMB hard registers.
|
||||
|
||||
Note that lots of code assumes that the first part of a regset is
|
||||
the same format as a HARD_REG_SET. To help make sure this is true,
|
||||
@@ -38,19 +36,8 @@ Boston, MA 02111-1307, USA. */
|
||||
|
||||
typedef unsigned HOST_WIDE_INT HARD_REG_ELT_TYPE;
|
||||
|
||||
#if FIRST_PSEUDO_REGISTER <= HOST_BITS_PER_WIDE_INT
|
||||
|
||||
#define HARD_REG_SET HARD_REG_ELT_TYPE
|
||||
|
||||
#else
|
||||
|
||||
#define HARD_REG_SET_LONGS \
|
||||
((FIRST_PSEUDO_REGISTER + HOST_BITS_PER_WIDE_INT - 1) \
|
||||
/ HOST_BITS_PER_WIDE_INT)
|
||||
typedef HARD_REG_ELT_TYPE HARD_REG_SET[HARD_REG_SET_LONGS];
|
||||
|
||||
#endif
|
||||
|
||||
/* HARD_CONST is used to cast a constant to the appropriate type
|
||||
for use with a HARD_REG_SET. */
|
||||
|
||||
@@ -83,8 +70,6 @@ typedef HARD_REG_ELT_TYPE HARD_REG_SET[HARD_REG_SET_LONGS];
|
||||
if X is a subset of Y, go to TO.
|
||||
*/
|
||||
|
||||
#ifdef HARD_REG_SET
|
||||
|
||||
#define SET_HARD_REG_BIT(SET, BIT) \
|
||||
((SET) |= HARD_CONST (1) << (BIT))
|
||||
#define CLEAR_HARD_REG_BIT(SET, BIT) \
|
||||
@@ -107,282 +92,6 @@ typedef HARD_REG_ELT_TYPE HARD_REG_SET[HARD_REG_SET_LONGS];
|
||||
|
||||
#define GO_IF_HARD_REG_EQUAL(X,Y,TO) if ((X) == (Y)) goto TO
|
||||
|
||||
#else
|
||||
|
||||
#define UHOST_BITS_PER_WIDE_INT ((unsigned) HOST_BITS_PER_WIDE_INT)
|
||||
|
||||
#define SET_HARD_REG_BIT(SET, BIT) \
|
||||
((SET)[(BIT) / UHOST_BITS_PER_WIDE_INT] \
|
||||
|= HARD_CONST (1) << ((BIT) % UHOST_BITS_PER_WIDE_INT))
|
||||
|
||||
#define CLEAR_HARD_REG_BIT(SET, BIT) \
|
||||
((SET)[(BIT) / UHOST_BITS_PER_WIDE_INT] \
|
||||
&= ~(HARD_CONST (1) << ((BIT) % UHOST_BITS_PER_WIDE_INT)))
|
||||
|
||||
#define TEST_HARD_REG_BIT(SET, BIT) \
|
||||
((SET)[(BIT) / UHOST_BITS_PER_WIDE_INT] \
|
||||
& (HARD_CONST (1) << ((BIT) % UHOST_BITS_PER_WIDE_INT)))
|
||||
|
||||
#if FIRST_PSEUDO_REGISTER <= 2*HOST_BITS_PER_WIDE_INT
|
||||
#define CLEAR_HARD_REG_SET(TO) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO); \
|
||||
scan_tp_[0] = 0; \
|
||||
scan_tp_[1] = 0; } while (0)
|
||||
|
||||
#define SET_HARD_REG_SET(TO) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO); \
|
||||
scan_tp_[0] = -1; \
|
||||
scan_tp_[1] = -1; } while (0)
|
||||
|
||||
#define COPY_HARD_REG_SET(TO, FROM) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM); \
|
||||
scan_tp_[0] = scan_fp_[0]; \
|
||||
scan_tp_[1] = scan_fp_[1]; } while (0)
|
||||
|
||||
#define COMPL_HARD_REG_SET(TO, FROM) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM); \
|
||||
scan_tp_[0] = ~ scan_fp_[0]; \
|
||||
scan_tp_[1] = ~ scan_fp_[1]; } while (0)
|
||||
|
||||
#define AND_HARD_REG_SET(TO, FROM) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM); \
|
||||
scan_tp_[0] &= scan_fp_[0]; \
|
||||
scan_tp_[1] &= scan_fp_[1]; } while (0)
|
||||
|
||||
#define AND_COMPL_HARD_REG_SET(TO, FROM) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM); \
|
||||
scan_tp_[0] &= ~ scan_fp_[0]; \
|
||||
scan_tp_[1] &= ~ scan_fp_[1]; } while (0)
|
||||
|
||||
#define IOR_HARD_REG_SET(TO, FROM) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM); \
|
||||
scan_tp_[0] |= scan_fp_[0]; \
|
||||
scan_tp_[1] |= scan_fp_[1]; } while (0)
|
||||
|
||||
#define IOR_COMPL_HARD_REG_SET(TO, FROM) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM); \
|
||||
scan_tp_[0] |= ~ scan_fp_[0]; \
|
||||
scan_tp_[1] |= ~ scan_fp_[1]; } while (0)
|
||||
|
||||
#define GO_IF_HARD_REG_SUBSET(X,Y,TO) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_xp_ = (X), *scan_yp_ = (Y); \
|
||||
if ((0 == (scan_xp_[0] & ~ scan_yp_[0])) \
|
||||
&& (0 == (scan_xp_[1] & ~ scan_yp_[1]))) \
|
||||
goto TO; } while (0)
|
||||
|
||||
#define GO_IF_HARD_REG_EQUAL(X,Y,TO) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_xp_ = (X), *scan_yp_ = (Y); \
|
||||
if ((scan_xp_[0] == scan_yp_[0]) \
|
||||
&& (scan_xp_[1] == scan_yp_[1])) \
|
||||
goto TO; } while (0)
|
||||
|
||||
#else
|
||||
#if FIRST_PSEUDO_REGISTER <= 3*HOST_BITS_PER_WIDE_INT
|
||||
#define CLEAR_HARD_REG_SET(TO) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO); \
|
||||
scan_tp_[0] = 0; \
|
||||
scan_tp_[1] = 0; \
|
||||
scan_tp_[2] = 0; } while (0)
|
||||
|
||||
#define SET_HARD_REG_SET(TO) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO); \
|
||||
scan_tp_[0] = -1; \
|
||||
scan_tp_[1] = -1; \
|
||||
scan_tp_[2] = -1; } while (0)
|
||||
|
||||
#define COPY_HARD_REG_SET(TO, FROM) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM); \
|
||||
scan_tp_[0] = scan_fp_[0]; \
|
||||
scan_tp_[1] = scan_fp_[1]; \
|
||||
scan_tp_[2] = scan_fp_[2]; } while (0)
|
||||
|
||||
#define COMPL_HARD_REG_SET(TO, FROM) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM); \
|
||||
scan_tp_[0] = ~ scan_fp_[0]; \
|
||||
scan_tp_[1] = ~ scan_fp_[1]; \
|
||||
scan_tp_[2] = ~ scan_fp_[2]; } while (0)
|
||||
|
||||
#define AND_HARD_REG_SET(TO, FROM) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM); \
|
||||
scan_tp_[0] &= scan_fp_[0]; \
|
||||
scan_tp_[1] &= scan_fp_[1]; \
|
||||
scan_tp_[2] &= scan_fp_[2]; } while (0)
|
||||
|
||||
#define AND_COMPL_HARD_REG_SET(TO, FROM) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM); \
|
||||
scan_tp_[0] &= ~ scan_fp_[0]; \
|
||||
scan_tp_[1] &= ~ scan_fp_[1]; \
|
||||
scan_tp_[2] &= ~ scan_fp_[2]; } while (0)
|
||||
|
||||
#define IOR_HARD_REG_SET(TO, FROM) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM); \
|
||||
scan_tp_[0] |= scan_fp_[0]; \
|
||||
scan_tp_[1] |= scan_fp_[1]; \
|
||||
scan_tp_[2] |= scan_fp_[2]; } while (0)
|
||||
|
||||
#define IOR_COMPL_HARD_REG_SET(TO, FROM) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM); \
|
||||
scan_tp_[0] |= ~ scan_fp_[0]; \
|
||||
scan_tp_[1] |= ~ scan_fp_[1]; \
|
||||
scan_tp_[2] |= ~ scan_fp_[2]; } while (0)
|
||||
|
||||
#define GO_IF_HARD_REG_SUBSET(X,Y,TO) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_xp_ = (X), *scan_yp_ = (Y); \
|
||||
if ((0 == (scan_xp_[0] & ~ scan_yp_[0])) \
|
||||
&& (0 == (scan_xp_[1] & ~ scan_yp_[1])) \
|
||||
&& (0 == (scan_xp_[2] & ~ scan_yp_[2]))) \
|
||||
goto TO; } while (0)
|
||||
|
||||
#define GO_IF_HARD_REG_EQUAL(X,Y,TO) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_xp_ = (X), *scan_yp_ = (Y); \
|
||||
if ((scan_xp_[0] == scan_yp_[0]) \
|
||||
&& (scan_xp_[1] == scan_yp_[1]) \
|
||||
&& (scan_xp_[2] == scan_yp_[2])) \
|
||||
goto TO; } while (0)
|
||||
|
||||
#else
|
||||
#if FIRST_PSEUDO_REGISTER <= 4*HOST_BITS_PER_WIDE_INT
|
||||
#define CLEAR_HARD_REG_SET(TO) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO); \
|
||||
scan_tp_[0] = 0; \
|
||||
scan_tp_[1] = 0; \
|
||||
scan_tp_[2] = 0; \
|
||||
scan_tp_[3] = 0; } while (0)
|
||||
|
||||
#define SET_HARD_REG_SET(TO) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO); \
|
||||
scan_tp_[0] = -1; \
|
||||
scan_tp_[1] = -1; \
|
||||
scan_tp_[2] = -1; \
|
||||
scan_tp_[3] = -1; } while (0)
|
||||
|
||||
#define COPY_HARD_REG_SET(TO, FROM) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM); \
|
||||
scan_tp_[0] = scan_fp_[0]; \
|
||||
scan_tp_[1] = scan_fp_[1]; \
|
||||
scan_tp_[2] = scan_fp_[2]; \
|
||||
scan_tp_[3] = scan_fp_[3]; } while (0)
|
||||
|
||||
#define COMPL_HARD_REG_SET(TO, FROM) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM); \
|
||||
scan_tp_[0] = ~ scan_fp_[0]; \
|
||||
scan_tp_[1] = ~ scan_fp_[1]; \
|
||||
scan_tp_[2] = ~ scan_fp_[2]; \
|
||||
scan_tp_[3] = ~ scan_fp_[3]; } while (0)
|
||||
|
||||
#define AND_HARD_REG_SET(TO, FROM) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM); \
|
||||
scan_tp_[0] &= scan_fp_[0]; \
|
||||
scan_tp_[1] &= scan_fp_[1]; \
|
||||
scan_tp_[2] &= scan_fp_[2]; \
|
||||
scan_tp_[3] &= scan_fp_[3]; } while (0)
|
||||
|
||||
#define AND_COMPL_HARD_REG_SET(TO, FROM) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM); \
|
||||
scan_tp_[0] &= ~ scan_fp_[0]; \
|
||||
scan_tp_[1] &= ~ scan_fp_[1]; \
|
||||
scan_tp_[2] &= ~ scan_fp_[2]; \
|
||||
scan_tp_[3] &= ~ scan_fp_[3]; } while (0)
|
||||
|
||||
#define IOR_HARD_REG_SET(TO, FROM) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM); \
|
||||
scan_tp_[0] |= scan_fp_[0]; \
|
||||
scan_tp_[1] |= scan_fp_[1]; \
|
||||
scan_tp_[2] |= scan_fp_[2]; \
|
||||
scan_tp_[3] |= scan_fp_[3]; } while (0)
|
||||
|
||||
#define IOR_COMPL_HARD_REG_SET(TO, FROM) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM); \
|
||||
scan_tp_[0] |= ~ scan_fp_[0]; \
|
||||
scan_tp_[1] |= ~ scan_fp_[1]; \
|
||||
scan_tp_[2] |= ~ scan_fp_[2]; \
|
||||
scan_tp_[3] |= ~ scan_fp_[3]; } while (0)
|
||||
|
||||
#define GO_IF_HARD_REG_SUBSET(X,Y,TO) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_xp_ = (X), *scan_yp_ = (Y); \
|
||||
if ((0 == (scan_xp_[0] & ~ scan_yp_[0])) \
|
||||
&& (0 == (scan_xp_[1] & ~ scan_yp_[1])) \
|
||||
&& (0 == (scan_xp_[2] & ~ scan_yp_[2])) \
|
||||
&& (0 == (scan_xp_[3] & ~ scan_yp_[3]))) \
|
||||
goto TO; } while (0)
|
||||
|
||||
#define GO_IF_HARD_REG_EQUAL(X,Y,TO) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_xp_ = (X), *scan_yp_ = (Y); \
|
||||
if ((scan_xp_[0] == scan_yp_[0]) \
|
||||
&& (scan_xp_[1] == scan_yp_[1]) \
|
||||
&& (scan_xp_[2] == scan_yp_[2]) \
|
||||
&& (scan_xp_[3] == scan_yp_[3])) \
|
||||
goto TO; } while (0)
|
||||
|
||||
#else /* FIRST_PSEUDO_REGISTER > 3*HOST_BITS_PER_WIDE_INT */
|
||||
|
||||
#define CLEAR_HARD_REG_SET(TO) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO); \
|
||||
register int i; \
|
||||
for (i = 0; i < HARD_REG_SET_LONGS; i++) \
|
||||
*scan_tp_++ = 0; } while (0)
|
||||
|
||||
#define SET_HARD_REG_SET(TO) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO); \
|
||||
register int i; \
|
||||
for (i = 0; i < HARD_REG_SET_LONGS; i++) \
|
||||
*scan_tp_++ = -1; } while (0)
|
||||
|
||||
#define COPY_HARD_REG_SET(TO, FROM) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM); \
|
||||
register int i; \
|
||||
for (i = 0; i < HARD_REG_SET_LONGS; i++) \
|
||||
*scan_tp_++ = *scan_fp_++; } while (0)
|
||||
|
||||
#define COMPL_HARD_REG_SET(TO, FROM) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM); \
|
||||
register int i; \
|
||||
for (i = 0; i < HARD_REG_SET_LONGS; i++) \
|
||||
*scan_tp_++ = ~ *scan_fp_++; } while (0)
|
||||
|
||||
#define AND_HARD_REG_SET(TO, FROM) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM); \
|
||||
register int i; \
|
||||
for (i = 0; i < HARD_REG_SET_LONGS; i++) \
|
||||
*scan_tp_++ &= *scan_fp_++; } while (0)
|
||||
|
||||
#define AND_COMPL_HARD_REG_SET(TO, FROM) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM); \
|
||||
register int i; \
|
||||
for (i = 0; i < HARD_REG_SET_LONGS; i++) \
|
||||
*scan_tp_++ &= ~ *scan_fp_++; } while (0)
|
||||
|
||||
#define IOR_HARD_REG_SET(TO, FROM) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM); \
|
||||
register int i; \
|
||||
for (i = 0; i < HARD_REG_SET_LONGS; i++) \
|
||||
*scan_tp_++ |= *scan_fp_++; } while (0)
|
||||
|
||||
#define IOR_COMPL_HARD_REG_SET(TO, FROM) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM); \
|
||||
register int i; \
|
||||
for (i = 0; i < HARD_REG_SET_LONGS; i++) \
|
||||
*scan_tp_++ |= ~ *scan_fp_++; } while (0)
|
||||
|
||||
#define GO_IF_HARD_REG_SUBSET(X,Y,TO) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_xp_ = (X), *scan_yp_ = (Y); \
|
||||
register int i; \
|
||||
for (i = 0; i < HARD_REG_SET_LONGS; i++) \
|
||||
if (0 != (*scan_xp_++ & ~ *scan_yp_++)) break; \
|
||||
if (i == HARD_REG_SET_LONGS) goto TO; } while (0)
|
||||
|
||||
#define GO_IF_HARD_REG_EQUAL(X,Y,TO) \
|
||||
do { register HARD_REG_ELT_TYPE *scan_xp_ = (X), *scan_yp_ = (Y); \
|
||||
register int i; \
|
||||
for (i = 0; i < HARD_REG_SET_LONGS; i++) \
|
||||
if (*scan_xp_++ != *scan_yp_++) break; \
|
||||
if (i == HARD_REG_SET_LONGS) goto TO; } while (0)
|
||||
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Define some standard sets of registers. */
|
||||
|
||||
/* Indexed by hard register number, contains 1 for registers
|
||||
@@ -429,21 +138,6 @@ extern HARD_REG_SET call_fixed_reg_set;
|
||||
|
||||
extern char global_regs[FIRST_PSEUDO_REGISTER];
|
||||
|
||||
/* Table of register numbers in the order in which to try to use them. */
|
||||
|
||||
#ifdef REG_ALLOC_ORDER /* Avoid undef symbol in certain broken linkers. */
|
||||
extern int reg_alloc_order[FIRST_PSEUDO_REGISTER];
|
||||
#endif
|
||||
|
||||
/* CYGNUS LOCAL z8k */
|
||||
/* Table of register numbers in the order in which to try to use them
|
||||
for reloads. */
|
||||
/* ??? Hack, see reload1.c. */
|
||||
#ifdef RELOAD_ALLOC_ORDER
|
||||
extern int reload_alloc_order[FIRST_PSEUDO_REGISTER];
|
||||
#endif
|
||||
/* END CYGNUS LOCAL */
|
||||
|
||||
/* For each reg class, a HARD_REG_SET saying which registers are in it. */
|
||||
|
||||
extern HARD_REG_SET reg_class_contents[];
|
||||
|
||||
@@ -1955,11 +1955,7 @@ find_free_reg (class, mode, qty, accept_call_clobbered, just_try_suggested,
|
||||
|
||||
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
|
||||
{
|
||||
#ifdef REG_ALLOC_ORDER
|
||||
int regno = reg_alloc_order[i];
|
||||
#else
|
||||
int regno = i;
|
||||
#endif
|
||||
if (! TEST_HARD_REG_BIT (first_used, regno)
|
||||
&& HARD_REGNO_MODE_OK (regno, mode)
|
||||
&& (qty_n_calls_crossed[qty] == 0
|
||||
@@ -1976,9 +1972,7 @@ find_free_reg (class, mode, qty, accept_call_clobbered, just_try_suggested,
|
||||
post_mark_life (regno, mode, 1, born_index, dead_index);
|
||||
return regno;
|
||||
}
|
||||
#ifndef REG_ALLOC_ORDER
|
||||
i += j; /* Skip starting points we know will lose */
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -111,20 +111,6 @@ int n_non_fixed_regs;
|
||||
and are also considered fixed. */
|
||||
|
||||
char global_regs[FIRST_PSEUDO_REGISTER];
|
||||
|
||||
/* Table of register numbers in the order in which to try to use them. */
|
||||
#ifdef REG_ALLOC_ORDER
|
||||
int reg_alloc_order[FIRST_PSEUDO_REGISTER] = REG_ALLOC_ORDER;
|
||||
#endif
|
||||
|
||||
/* CYGNUS LOCAL z8k */
|
||||
/* Table of register numbers in the order in which to try to use them
|
||||
for reloads. */
|
||||
/* ??? Hack, see reload1.c. */
|
||||
#ifdef RELOAD_ALLOC_ORDER
|
||||
int reload_alloc_order[FIRST_PSEUDO_REGISTER] = RELOAD_ALLOC_ORDER;
|
||||
#endif
|
||||
/* END CYGNUS LOCAL */
|
||||
|
||||
/* For each reg class, a HARD_REG_SET saying which registers are in it. */
|
||||
|
||||
@@ -257,13 +243,6 @@ init_reg_sets_1 ()
|
||||
{
|
||||
register unsigned int i, j;
|
||||
|
||||
/* This macro allows the fixed or call-used registers
|
||||
and the register classes to depend on target flags. */
|
||||
|
||||
#ifdef CONDITIONAL_REGISTER_USAGE
|
||||
CONDITIONAL_REGISTER_USAGE;
|
||||
#endif
|
||||
|
||||
/* Compute number of hard regs in each class. */
|
||||
|
||||
zero_memory ((char *) reg_class_size, sizeof reg_class_size);
|
||||
@@ -280,11 +259,8 @@ init_reg_sets_1 ()
|
||||
{
|
||||
for (j = 0; j < N_REG_CLASSES; j++)
|
||||
{
|
||||
#ifdef HARD_REG_SET
|
||||
register /* Declare it register if it's a scalar. */
|
||||
#endif
|
||||
HARD_REG_SET c;
|
||||
register int k;
|
||||
HARD_REG_SET c;
|
||||
int k;
|
||||
|
||||
COPY_HARD_REG_SET (c, reg_class_contents[i]);
|
||||
IOR_HARD_REG_SET (c, reg_class_contents[j]);
|
||||
@@ -314,11 +290,8 @@ init_reg_sets_1 ()
|
||||
{
|
||||
for (j = 0; j < N_REG_CLASSES; j++)
|
||||
{
|
||||
#ifdef HARD_REG_SET
|
||||
register /* Declare it register if it's a scalar. */
|
||||
#endif
|
||||
HARD_REG_SET c;
|
||||
register int k;
|
||||
HARD_REG_SET c;
|
||||
int k;
|
||||
|
||||
COPY_HARD_REG_SET (c, reg_class_contents[i]);
|
||||
IOR_HARD_REG_SET (c, reg_class_contents[j]);
|
||||
@@ -2184,9 +2157,6 @@ reg_classes_intersect_p (c1, c2)
|
||||
register enum reg_class c1;
|
||||
register enum reg_class c2;
|
||||
{
|
||||
#ifdef HARD_REG_SET
|
||||
register
|
||||
#endif
|
||||
HARD_REG_SET c;
|
||||
|
||||
if (c1 == c2) return 1;
|
||||
|
||||
@@ -4001,39 +4001,8 @@ order_regs_for_reload (chain)
|
||||
FREE_REG_SET (pseudos_counted);
|
||||
|
||||
/* Prefer registers not so far used, for use in temporary loading.
|
||||
Among them, if REG_ALLOC_ORDER is defined, use that order.
|
||||
Otherwise, prefer registers not preserved by calls. */
|
||||
Prefer registers not preserved by calls. */
|
||||
|
||||
/* CYGNUS LOCAL z8k */
|
||||
#ifdef RELOAD_ALLOC_ORDER
|
||||
/* ??? This is a hack. This will give poor code, but is used for the
|
||||
z8k because it is currently the only way to ensure that we will be
|
||||
able to satisfy all of the reloads. Possible other solutions:
|
||||
- make reload keep track of how many groups of each size are needed,
|
||||
instead of just remembering the maximum group size
|
||||
- improve code for making group 4 reloads
|
||||
-- try looking for combinations of single register spills and potential
|
||||
reload regs (sample uncompleted code exists for this)
|
||||
-- try expanding an existing group 2 reload to a group 4 reload
|
||||
-- unallocate a group 2 reload, try to allocate the group 4 reload,
|
||||
then reallocate the group 2 reload, if one step fails then all do
|
||||
- add code to deal with overlapping register groups(?). */
|
||||
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
|
||||
potential_reload_regs[i] = reload_alloc_order[i];
|
||||
#else
|
||||
/* END CYGNUS LOCAL */
|
||||
|
||||
|
||||
#ifdef REG_ALLOC_ORDER
|
||||
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
|
||||
{
|
||||
int regno = reg_alloc_order[i];
|
||||
|
||||
if (hard_reg_n_uses[regno].uses == 0
|
||||
&& ! TEST_HARD_REG_BIT (bad_spill_regs, regno))
|
||||
potential_reload_regs[o++] = regno;
|
||||
}
|
||||
#else
|
||||
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
|
||||
{
|
||||
if (hard_reg_n_uses[i].uses == 0 && call_used_regs[i]
|
||||
@@ -4046,7 +4015,6 @@ order_regs_for_reload (chain)
|
||||
&& ! TEST_HARD_REG_BIT (bad_spill_regs, i))
|
||||
potential_reload_regs[o++] = i;
|
||||
}
|
||||
#endif
|
||||
|
||||
qsort (hard_reg_n_uses, FIRST_PSEUDO_REGISTER,
|
||||
sizeof hard_reg_n_uses[0], hard_reg_use_compare);
|
||||
@@ -4062,9 +4030,6 @@ order_regs_for_reload (chain)
|
||||
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
|
||||
if (TEST_HARD_REG_BIT (bad_spill_regs, hard_reg_n_uses[i].regno))
|
||||
potential_reload_regs[o++] = hard_reg_n_uses[i].regno;
|
||||
/* CYGNUS LOCAL z8k */
|
||||
#endif
|
||||
/* END CYGNUS LOCAL */
|
||||
}
|
||||
|
||||
/* Reload pseudo-registers into hard regs around each insn as needed.
|
||||
@@ -5308,19 +5273,9 @@ allocate_reload_reg (chain, r, last_reload, noerror)
|
||||
allocating the first one in such a way that we are not left with
|
||||
sufficient groups to handle the rest. */
|
||||
|
||||
/* CYGNUS LOCAL z8k */
|
||||
#ifndef RELOAD_ALLOC_ORDER
|
||||
/* If RELOAD_ALLOC_ORDER is defined, then we must always take spill
|
||||
registers in that defined order, so this round-robin must be
|
||||
disabled. */
|
||||
/* END CYGNUS LOCAL */
|
||||
|
||||
if (noerror || ! force_group)
|
||||
i = last_spill_reg;
|
||||
else
|
||||
/* CYGNUS LOCAL z8k */
|
||||
#endif
|
||||
/* END CYGNUS LOCAL */
|
||||
i = -1;
|
||||
|
||||
for (count = 0; count < n_spills; count++)
|
||||
|
||||
@@ -542,11 +542,7 @@ stupid_find_reg (call_preserved, class, mode,
|
||||
|
||||
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
|
||||
{
|
||||
#ifdef REG_ALLOC_ORDER
|
||||
int regno = reg_alloc_order[i];
|
||||
#else
|
||||
int regno = i;
|
||||
#endif
|
||||
|
||||
/* If a register has screwy overlap problems,
|
||||
don't use it at all if not optimizing.
|
||||
@@ -574,9 +570,7 @@ stupid_find_reg (call_preserved, class, mode,
|
||||
}
|
||||
return regno;
|
||||
}
|
||||
#ifndef REG_ALLOC_ORDER
|
||||
i += j; /* Skip starting points we know will lose */
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
240
gcc/sys-types.h
240
gcc/sys-types.h
@@ -1,240 +0,0 @@
|
||||
enum clnt_stat { ___fake1 };
|
||||
enum auth_stat { ___fake2 };
|
||||
|
||||
struct netconfig;
|
||||
struct netbuf;
|
||||
struct address;
|
||||
struct tm;
|
||||
struct ldfile;
|
||||
struct syment;
|
||||
struct stat;
|
||||
struct timeval;
|
||||
struct termios;
|
||||
struct tms;
|
||||
struct dma_cb;
|
||||
struct cred;
|
||||
struct vnode;
|
||||
struct vattr;
|
||||
struct uarg;
|
||||
struct statfs;
|
||||
struct statvfs;
|
||||
struct dirent;
|
||||
struct itimerval;
|
||||
struct mnttab;
|
||||
struct strbuf;
|
||||
struct vfstab;
|
||||
struct ldfile;
|
||||
struct syment;
|
||||
struct scnhdr;
|
||||
struct exception;
|
||||
struct nd_hostservlist;
|
||||
struct nd_hostserv;
|
||||
struct utsname;
|
||||
struct uio;
|
||||
struct pid;
|
||||
struct pollfd;
|
||||
struct nlist;
|
||||
struct passwd;
|
||||
struct spwd;
|
||||
struct flock;
|
||||
struct seg;
|
||||
struct sembuf;
|
||||
struct sigaction;
|
||||
struct utimbuf;
|
||||
struct map;
|
||||
struct filehdr;
|
||||
struct lineno;
|
||||
struct nd_addrlist;
|
||||
struct FTW;
|
||||
struct buf;
|
||||
struct ustat;
|
||||
struct qelem;
|
||||
struct prpsinfo;
|
||||
struct user;
|
||||
struct qelem;
|
||||
struct execenv;
|
||||
struct utmpx;
|
||||
|
||||
struct direct;
|
||||
struct tm;
|
||||
struct stat;
|
||||
struct rlimit;
|
||||
struct rusage;
|
||||
struct sockaddr;
|
||||
struct sockaddr_in;
|
||||
struct timeval { int i; };
|
||||
struct exportent;
|
||||
struct fstab;
|
||||
struct hostent;
|
||||
struct in_addr { int i; };
|
||||
struct ldfile;
|
||||
struct mallinfo { int i; };
|
||||
struct mint;
|
||||
struct nmtent;
|
||||
struct netent;
|
||||
struct pmaplist;
|
||||
struct protoent;
|
||||
struct rpcent;
|
||||
struct servent;
|
||||
struct authdes_cred;
|
||||
struct rpc_err;
|
||||
struct ypall_callback;
|
||||
|
||||
union wait;
|
||||
|
||||
/* Get size_t and wchar_t. */
|
||||
#include <stddef.h>
|
||||
|
||||
/* #include "sys/types.h" */
|
||||
#define ssize_t int
|
||||
|
||||
/* The actual types used here are mostly wrong,
|
||||
but it is not supposed to matter what types we use here. */
|
||||
|
||||
typedef int dev_t;
|
||||
typedef int pid_t;
|
||||
typedef int gid_t;
|
||||
typedef int off_t;
|
||||
typedef int mode_t;
|
||||
typedef int uid_t;
|
||||
|
||||
typedef int proc_t;
|
||||
typedef int time_t;
|
||||
typedef int addr_t;
|
||||
typedef int caddr_t;
|
||||
typedef int clock_t;
|
||||
typedef int div_t;
|
||||
typedef int ldiv_t;
|
||||
typedef int dl_t;
|
||||
typedef int major_t;
|
||||
typedef int minor_t;
|
||||
typedef int emcp_t;
|
||||
typedef int fpclass_t;
|
||||
typedef int index_t;
|
||||
typedef int ecb_t;
|
||||
typedef int aioop_t;
|
||||
typedef int evver_t;
|
||||
typedef int evcntlcmds_t;
|
||||
typedef int idtype_t;
|
||||
typedef int id_t;
|
||||
typedef int procset_t;
|
||||
typedef int hostid_t;
|
||||
typedef int evpollcmds_t;
|
||||
typedef int event_t;
|
||||
typedef int hrtime_t;
|
||||
typedef int evqcntlcmds_t;
|
||||
typedef int sigset_t;
|
||||
typedef int evsiginfo_t;
|
||||
typedef int evcontext_t;
|
||||
typedef int evta_t;
|
||||
typedef int speed_t;
|
||||
typedef int rlim_t;
|
||||
typedef int cred_t;
|
||||
typedef int file_t;
|
||||
typedef int vnode_t;
|
||||
typedef int vfs_t;
|
||||
typedef int fpos_t;
|
||||
typedef int exhda_t;
|
||||
typedef int ucontext_t;
|
||||
typedef int sess_t;
|
||||
typedef int hrtcmd_t;
|
||||
typedef int interval_t;
|
||||
typedef int key_t;
|
||||
typedef int daddr_t;
|
||||
typedef int stack_t;
|
||||
typedef int sigaction_t;
|
||||
typedef int siginfo_t;
|
||||
typedef int mblk_t;
|
||||
typedef int paddr_t;
|
||||
typedef int qband_t;
|
||||
typedef int queue_t;
|
||||
typedef int rf_resource_t;
|
||||
typedef int sr_mount_t;
|
||||
typedef int timer_t;
|
||||
typedef int fpregset_t;
|
||||
typedef int prstatus_t;
|
||||
typedef int vfssw_t;
|
||||
typedef int eucwidth_t;
|
||||
typedef int page_t;
|
||||
|
||||
typedef int u_int;
|
||||
typedef int u_short;
|
||||
typedef int u_long;
|
||||
typedef int u_char;
|
||||
|
||||
typedef int ushort;
|
||||
typedef int ulong;
|
||||
typedef int uint;
|
||||
|
||||
typedef int __gnuc_va_list;
|
||||
|
||||
typedef int archdr;
|
||||
typedef int AUTH;
|
||||
typedef int CLIENT;
|
||||
typedef int DIR;
|
||||
typedef int ENTRY;
|
||||
typedef int Elf;
|
||||
typedef int Elf32_Ehdr;
|
||||
typedef int Elf32_Phdr;
|
||||
typedef int Elf32_Shdr;
|
||||
typedef int Elf_Arhdr;
|
||||
typedef int Elf_Arsym;
|
||||
typedef int Elf_Cmd;
|
||||
typedef int Elf_Data;
|
||||
typedef int Elf_Scn;
|
||||
typedef int Elf_Type;
|
||||
typedef int Elf_Kind;
|
||||
typedef int FIELD;
|
||||
typedef int FIELDTYPE;
|
||||
typedef int PTF_int;
|
||||
typedef int PTF_void;
|
||||
typedef int PTF_charP;
|
||||
typedef int FILE;
|
||||
typedef int FORM;
|
||||
typedef int ITEM;
|
||||
typedef int MENU;
|
||||
typedef int OPTIONS;
|
||||
typedef int PANEL;
|
||||
typedef int FTP_void;
|
||||
typedef int RPCBLIST;
|
||||
typedef int SCREEN;
|
||||
typedef int SVCXPRT;
|
||||
typedef int TERMINAL;
|
||||
typedef int WINDOW;
|
||||
typedef int bool;
|
||||
typedef int nl_catd;
|
||||
typedef int nl_item;
|
||||
typedef int chtype;
|
||||
typedef int datum;
|
||||
typedef int fp_rnd;
|
||||
typedef int spraycumul;
|
||||
typedef int WORD;
|
||||
typedef int VISIT;
|
||||
typedef int ACTION;
|
||||
|
||||
typedef int *jmp_buf;
|
||||
typedef int *sigjmp_buf;
|
||||
typedef int xdrproc_t;
|
||||
typedef int CALL;
|
||||
typedef int bool_t;
|
||||
typedef int DBM;
|
||||
typedef int des_block;
|
||||
typedef int resultproc_t;
|
||||
|
||||
|
||||
#ifdef BSD
|
||||
|
||||
#define mode_t int
|
||||
#define uid_t int
|
||||
#define gid_t int
|
||||
#define time_t long
|
||||
#define pid_t int
|
||||
#define signal_ret_t int
|
||||
#define wait_arg_t union wait
|
||||
|
||||
#else
|
||||
|
||||
#define signal_ret_t void
|
||||
#define wait_arg_t int
|
||||
|
||||
#endif
|
||||
@@ -1,96 +0,0 @@
|
||||
#line 59 "config/arc/arc.h"
|
||||
_("may not use both -EB and -EL")
|
||||
#line 176 "config/arm/arm.h"
|
||||
_("-mapcs-26 and -mapcs-32 may not be used together")
|
||||
#line 187 "config/arm/arm.h"
|
||||
_("-msoft-float and -mhard_float may not be used together")
|
||||
#line 198 "config/arm/arm.h"
|
||||
_("-mbig-endian and -mlittle-endian may not be used together")
|
||||
#line 72 "config/arm/riscix.h"
|
||||
_("-mbsd and -pedantic incompatible")
|
||||
#line 73 "config/arm/riscix.h"
|
||||
_("-mbsd and -mxopen incompatible")
|
||||
#line 74 "config/arm/riscix.h"
|
||||
_("-mxopen and -pedantic incompatible")
|
||||
#line 133 "config/arm/riscix.h"
|
||||
_("-mbsd and -pedantic incompatible")
|
||||
#line 134 "config/arm/riscix.h"
|
||||
_("-mbsd and -mxopen incompatible")
|
||||
#line 135 "config/arm/riscix.h"
|
||||
_("-mxopen and -pedantic incompatible")
|
||||
#line 126 "config/dsp16xx/dsp16xx.h"
|
||||
_("A -ifile option requires a -map option")
|
||||
#line 135 "config/dsp16xx/dsp16xx.h"
|
||||
_("A -ifile option requires a -map option")
|
||||
#line 809 "config/i386/sco5.h"
|
||||
_("-static not valid with -mcoff")
|
||||
#line 810 "config/i386/sco5.h"
|
||||
_("-shared not valid with -mcoff")
|
||||
#line 811 "config/i386/sco5.h"
|
||||
_("-symbolic not valid with -mcoff")
|
||||
#line 847 "config/i386/sco5.h"
|
||||
_("-fpic is not valid with -mcoff")
|
||||
#line 848 "config/i386/sco5.h"
|
||||
_("-fPIC is not valid with -mcoff")
|
||||
#line 882 "config/i386/sco5.h"
|
||||
_("-static not valid with -mcoff")
|
||||
#line 883 "config/i386/sco5.h"
|
||||
_("-shared not valid with -mcoff")
|
||||
#line 884 "config/i386/sco5.h"
|
||||
_("-symbolic not valid with -mcoff")
|
||||
#line 885 "config/i386/sco5.h"
|
||||
_("-fpic not valid with -mcoff")
|
||||
#line 886 "config/i386/sco5.h"
|
||||
_("-fPIC not valid with -mcoff")
|
||||
#line 305 "config/i860/fx2800.h"
|
||||
_("-p option not supported: use -pg instead")
|
||||
#line 674 "config/mips/mips.h"
|
||||
_("-pipe is not supported.")
|
||||
#line 811 "config/mips/mips.h"
|
||||
_("may not use both -mfp64 and -msingle-float")
|
||||
#line 812 "config/mips/mips.h"
|
||||
_("may not use both -mfp64 and -m4650")
|
||||
#line 815 "config/mips/mips.h"
|
||||
_("may not use both -EB and -EL")
|
||||
#line 27 "config/mips/r3900.h"
|
||||
_("-mhard-float not supported.")
|
||||
#line 29 "config/mips/r3900.h"
|
||||
_("-msingle-float and -msoft-float can not both be specified.")
|
||||
#line 41 "config/mips/r3900.h"
|
||||
_("-mhard-float not supported.")
|
||||
#line 43 "config/mips/r3900.h"
|
||||
_("-msingle-float and -msoft-float can not both be specified.")
|
||||
#line 166 "config/nextstep.h"
|
||||
_("-p profiling is no longer supported. Use -pg instead.")
|
||||
#line 169 "config/nextstep.h"
|
||||
_("-p profiling is no longer supported. Use -pg instead.")
|
||||
#line 36 "config/vax/vax.h"
|
||||
_("profiling not supported with -mg\n")
|
||||
#line 37 "config/vax/vax.h"
|
||||
_("profiling not supported with -mg\n")
|
||||
#line 32 "cp/lang-specs.h"
|
||||
_("GNU C++ does not support -C without using -E")
|
||||
#line 45 "cp/lang-specs.h"
|
||||
_("-pg and -fomit-frame-pointer are incompatible")
|
||||
#line 56 "cp/lang-specs.h"
|
||||
_("-pg and -fomit-frame-pointer are incompatible")
|
||||
#line 603 "gcc.c"
|
||||
_("GNU C does not support -C without using -E")
|
||||
#line 617 "gcc.c"
|
||||
_("-pg and -fomit-frame-pointer are incompatible")
|
||||
#line 624 "gcc.c"
|
||||
_("GNU C does not support -C without using -E")
|
||||
#line 633 "gcc.c"
|
||||
_("-E required when input is from standard input")
|
||||
#line 637 "gcc.c"
|
||||
_("GNU C does not support -C without using -E")
|
||||
#line 652 "gcc.c"
|
||||
_("-pg and -fomit-frame-pointer are incompatible")
|
||||
#line 659 "gcc.c"
|
||||
_("Compilation of header file requested")
|
||||
#line 661 "gcc.c"
|
||||
_("GNU C does not support -C without using -E")
|
||||
#line 676 "gcc.c"
|
||||
_("-pg and -fomit-frame-pointer are incompatible")
|
||||
#line 689 "gcc.c"
|
||||
_("GNU C does not support -C without using -E")
|
||||
Reference in New Issue
Block a user