From 85ff473e569925cbf9858fcc45491dda25b7ae92 Mon Sep 17 00:00:00 2001 From: James Van Artsdalen Date: Wed, 20 Jan 1993 06:45:28 +0000 Subject: [PATCH] (PREFERRED_RELOAD_CLASS): Narrow ALL_REGS to GENERAL_REGS. (PREFERRED_OUTPUT_RELOAD_CLASS): New macro. Narrow ALL_REGS to GENERAL_REGS. (SECONDARY_MEMORY_NEEDED): New macro. From-SVN: r3295 --- gcc/config/i386/i386.h | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index 73b6f255c1d..c5383accdc3 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -524,19 +524,29 @@ extern enum reg_class regclass_map[FIRST_PSEUDO_REGISTER]; 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. */ -/* Don't put float CONST_DOUBLE into any regs. +/* Don't put float CONST_DOUBLE into fp regs. QImode must go into class Q_REGS. MODE_INT must not go into FLOAT_REGS. */ #define PREFERRED_RELOAD_CLASS(X,CLASS) \ - (GET_CODE (X) == CONST_DOUBLE && GET_MODE (X) != VOIDmode \ - ? NO_REGS \ - : GET_MODE (X) == QImode \ - ? (! reg_class_subset_p ((CLASS), Q_REGS) ? Q_REGS : (CLASS)) \ + (GET_CODE (X) == CONST_DOUBLE && GET_MODE (X) != VOIDmode ? NO_REGS \ + : GET_MODE (X) == QImode && ! reg_class_subset_p (CLASS, Q_REGS) ? Q_REGS \ : ((CLASS) == FLOAT_REGS \ && (GET_MODE (X) == VOIDmode \ - || GET_MODE_CLASS (GET_MODE (X)) == MODE_INT) ? \ - GENERAL_REGS : (CLASS))) + || 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)) + +/* If we are copying between general and FP registers, we need a memory + location. */ + +#define SECONDARY_MEMORY_NEEDED(CLASS1,CLASS2,MODE) \ + (((CLASS1) == FLOAT_REGS && (CLASS2) != FLOAT_REGS) \ + || ((CLASS2) == FLOAT_REGS && (CLASS1) != FLOAT_REGS)) /* Return the maximum number of consecutive registers needed to represent mode MODE in a register of class CLASS. */ -- 2.43.5