diff options
Diffstat (limited to 'gcc/config/i386')
-rw-r--r-- | gcc/config/i386/i386-protos.h | 2 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 18 | ||||
-rw-r--r-- | gcc/config/i386/i386.h | 5 |
3 files changed, 11 insertions, 14 deletions
diff --git a/gcc/config/i386/i386-protos.h b/gcc/config/i386/i386-protos.h index 4c57615..ecb0a4c 100644 --- a/gcc/config/i386/i386-protos.h +++ b/gcc/config/i386/i386-protos.h @@ -167,8 +167,6 @@ extern int ix86_reg_parm_stack_space (const_tree); extern void ix86_split_fp_branch (enum rtx_code code, rtx, rtx, rtx, rtx, rtx); -extern bool ix86_secondary_memory_needed (enum reg_class, enum reg_class, - machine_mode, int); extern bool ix86_cannot_change_mode_class (machine_mode, machine_mode, enum reg_class); diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index a508f56..b2b02ac 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -41102,8 +41102,8 @@ ix86_class_likely_spilled_p (reg_class_t rclass) To optimize register_move_cost performance, define inline variant. */ static inline bool -inline_secondary_memory_needed (enum reg_class class1, enum reg_class class2, - machine_mode mode, int strict) +inline_secondary_memory_needed (machine_mode mode, reg_class_t class1, + reg_class_t class2, int strict) { if (lra_in_progress && (class1 == NO_REGS || class2 == NO_REGS)) return false; @@ -41155,11 +41155,13 @@ inline_secondary_memory_needed (enum reg_class class1, enum reg_class class2, return false; } -bool -ix86_secondary_memory_needed (enum reg_class class1, enum reg_class class2, - machine_mode mode, int strict) +/* Implement TARGET_SECONDARY_MEMORY_NEEDED. */ + +static bool +ix86_secondary_memory_needed (machine_mode mode, reg_class_t class1, + reg_class_t class2) { - return inline_secondary_memory_needed (class1, class2, mode, strict); + return inline_secondary_memory_needed (mode, class1, class2, true); } /* Implement TARGET_SECONDARY_MEMORY_NEEDED_MODE. @@ -41380,7 +41382,7 @@ ix86_register_move_cost (machine_mode mode, reg_class_t class1_i, by load. In order to avoid bad register allocation choices, we need for this to be *at least* as high as the symmetric MEMORY_MOVE_COST. */ - if (inline_secondary_memory_needed (class1, class2, mode, 0)) + if (inline_secondary_memory_needed (mode, class1, class2, false)) { int cost = 1; @@ -53220,6 +53222,8 @@ ix86_run_selftests (void) #undef TARGET_SECONDARY_RELOAD #define TARGET_SECONDARY_RELOAD ix86_secondary_reload +#undef TARGET_SECONDARY_MEMORY_NEEDED +#define TARGET_SECONDARY_MEMORY_NEEDED ix86_secondary_memory_needed #undef TARGET_SECONDARY_MEMORY_NEEDED_MODE #define TARGET_SECONDARY_MEMORY_NEEDED_MODE ix86_secondary_memory_needed_mode diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index 09b8da5..cbd6a11 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -1519,11 +1519,6 @@ enum reg_class #define INDEX_REG_CLASS INDEX_REGS #define BASE_REG_CLASS GENERAL_REGS -/* If we are copying between general and FP registers, we need a memory - location. The same is true for SSE and MMX registers. */ -#define SECONDARY_MEMORY_NEEDED(CLASS1, CLASS2, MODE) \ - ix86_secondary_memory_needed ((CLASS1), (CLASS2), (MODE), 1) - /* Return a class of registers that cannot change FROM mode to TO mode. */ #define CANNOT_CHANGE_MODE_CLASS(FROM, TO, CLASS) \ |