Commit d398b3b1 by James Van Artsdalen

(PREFERRED_RELOAD_CLASS): Only narrow MODE_FLOAT reloads from ALL_REGS to GENERAL_REGS.

(PREFERRED_RELOAD_CLASS): Only narrow MODE_FLOAT reloads from ALL_REGS to
GENERAL_REGS.
(PREFERRED_OUTPUT_RELOAD_CLASS): Deleted.
(INIT_EXPANDERS): New macro.

From-SVN: r3828
parent 5e82e7bd
...@@ -529,21 +529,16 @@ extern enum reg_class regclass_map[FIRST_PSEUDO_REGISTER]; ...@@ -529,21 +529,16 @@ 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 float CONST_DOUBLE into fp regs. /* Put float CONST_DOUBLE in the constant pool instead of fp regs.
QImode must go into class Q_REGS. QImode must go into class Q_REGS.
MODE_INT must not go into FLOAT_REGS. */ Narrow ALL_REGS to GENERAL_REGS. This supports allowing movsf and
movdf to do mem-to-mem moves through integer regs. */
#define PREFERRED_RELOAD_CLASS(X,CLASS) \ #define PREFERRED_RELOAD_CLASS(X,CLASS) \
(GET_CODE (X) == CONST_DOUBLE && GET_MODE (X) != VOIDmode ? NO_REGS \ (GET_CODE (X) == CONST_DOUBLE && GET_MODE (X) != VOIDmode ? NO_REGS \
: GET_MODE (X) == QImode && ! reg_class_subset_p (CLASS, Q_REGS) ? Q_REGS \ : GET_MODE (X) == QImode && ! reg_class_subset_p (CLASS, Q_REGS) ? Q_REGS \
: (FLOAT_CLASS_P (CLASS) \ : ((CLASS) == ALL_REGS \
&& (GET_MODE (X) == VOIDmode \ && GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT) ? GENERAL_REGS \
|| GET_MODE_CLASS (GET_MODE (X)) == MODE_INT)) ? GENERAL_REGS \
: (CLASS) == ALL_REGS ? GENERAL_REGS \
: (CLASS))
#define PREFERRED_OUTPUT_RELOAD_CLASS(X,CLASS) \
((CLASS) == ALL_REGS ? GENERAL_REGS \
: (CLASS)) : (CLASS))
/* If we are copying between general and FP registers, we need a memory /* If we are copying between general and FP registers, we need a memory
...@@ -1090,6 +1085,13 @@ do \ ...@@ -1090,6 +1085,13 @@ do \
} \ } \
} \ } \
while (0) while (0)
/* Initialize data used by insn expanders. This is called from
init_emit, once for each function, before code is generated.
For 386, clear stack slot assignments remembered from previous
functions. */
#define INIT_EXPANDERS clear_386_stack_locals ()
/* Specify the machine mode that this machine uses /* Specify the machine mode that this machine uses
for the index in the tablejump instruction. */ for the index in the tablejump instruction. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment