(DEBUG_PRINT_REG): Print regno along with printable name.
(CONST_COSTS): Handle integer CONST_DOUBLE correctly. (PREFERRED_RELOAD_CLASS): Allow integer CONST_DOUBLE into int regs. From-SVN: r3117
This commit is contained in:
parent
b491172aee
commit
7488be4e12
@ -524,16 +524,18 @@ extern enum reg_class regclass_map[FIRST_PSEUDO_REGISTER];
|
|||||||
reloaded into floating registers (since no move-insn can do that)
|
reloaded into floating registers (since no move-insn can do that)
|
||||||
and we ensure that QImodes aren't reloaded into the esi or edi reg. */
|
and we ensure that QImodes aren't reloaded into the esi or edi reg. */
|
||||||
|
|
||||||
/* Don't put CONST_DOUBLE into FLOAT_REGS.
|
/* Don't put float CONST_DOUBLE into any regs.
|
||||||
QImode must go into class Q_REGS.
|
QImode must go into class Q_REGS.
|
||||||
MODE_INT must not go into FLOAT_REGS. */
|
MODE_INT must not go into FLOAT_REGS. */
|
||||||
|
|
||||||
#define PREFERRED_RELOAD_CLASS(X,CLASS) \
|
#define PREFERRED_RELOAD_CLASS(X,CLASS) \
|
||||||
(GET_CODE (X) == CONST_DOUBLE \
|
(GET_CODE (X) == CONST_DOUBLE && GET_MODE (X) != VOIDmode \
|
||||||
? NO_REGS \
|
? NO_REGS \
|
||||||
: GET_MODE (X) == QImode \
|
: GET_MODE (X) == QImode \
|
||||||
? (! reg_class_subset_p ((CLASS), Q_REGS) ? Q_REGS : (CLASS)) \
|
? (! reg_class_subset_p ((CLASS), Q_REGS) ? Q_REGS : (CLASS)) \
|
||||||
: (GET_MODE_CLASS (GET_MODE (X)) == MODE_INT && (CLASS) == FLOAT_REGS ? \
|
: ((CLASS) == FLOAT_REGS \
|
||||||
|
&& (GET_MODE (X) == VOIDmode \
|
||||||
|
|| GET_MODE_CLASS (GET_MODE (X)) == MODE_INT) ? \
|
||||||
GENERAL_REGS : (CLASS)))
|
GENERAL_REGS : (CLASS)))
|
||||||
|
|
||||||
/* Return the maximum number of consecutive registers
|
/* Return the maximum number of consecutive registers
|
||||||
@ -1180,7 +1182,10 @@ while (0)
|
|||||||
return flag_pic && SYMBOLIC_CONST (RTX) ? 2 : 0; \
|
return flag_pic && SYMBOLIC_CONST (RTX) ? 2 : 0; \
|
||||||
case CONST_DOUBLE: \
|
case CONST_DOUBLE: \
|
||||||
{ \
|
{ \
|
||||||
int code = standard_80387_constant_p (RTX); \
|
int code; \
|
||||||
|
if (GET_MODE (RTX) == VOIDmode) \
|
||||||
|
return 2; \
|
||||||
|
code = standard_80387_constant_p (RTX); \
|
||||||
return code == 1 ? 0 : \
|
return code == 1 ? 0 : \
|
||||||
code == 2 ? 1 : \
|
code == 2 ? 1 : \
|
||||||
2; \
|
2; \
|
||||||
@ -1510,7 +1515,7 @@ extern char *qi_high_reg_name[];
|
|||||||
#define DEBUG_PRINT_REG(X, CODE, FILE) \
|
#define DEBUG_PRINT_REG(X, CODE, FILE) \
|
||||||
do { static char *hi_name[] = HI_REGISTER_NAMES; \
|
do { static char *hi_name[] = HI_REGISTER_NAMES; \
|
||||||
static char *qi_name[] = QI_REGISTER_NAMES; \
|
static char *qi_name[] = QI_REGISTER_NAMES; \
|
||||||
fprintf (FILE, "%s", RP); \
|
fprintf (FILE, "%d %s", REGNO (X), RP); \
|
||||||
if (REGNO (X) == ARG_POINTER_REGNUM) \
|
if (REGNO (X) == ARG_POINTER_REGNUM) \
|
||||||
{ fputs ("argp", FILE); break; } \
|
{ fputs ("argp", FILE); break; } \
|
||||||
if (STACK_TOP_P (X)) \
|
if (STACK_TOP_P (X)) \
|
||||||
|
Loading…
Reference in New Issue
Block a user