diff options
Diffstat (limited to 'gcc/config/pa')
-rw-r--r-- | gcc/config/pa/pa-64.h | 2 | ||||
-rw-r--r-- | gcc/config/pa/pa.c | 18 |
2 files changed, 19 insertions, 1 deletions
diff --git a/gcc/config/pa/pa-64.h b/gcc/config/pa/pa-64.h index 1d08b28..e10cbb3 100644 --- a/gcc/config/pa/pa-64.h +++ b/gcc/config/pa/pa-64.h @@ -97,7 +97,7 @@ along with GCC; see the file COPYING3. If not see function which has no frame and this function might also use SP-16. We have 14-bit immediates on the 64-bit port, so we use secondary memory for the copies. */ -#define SECONDARY_MEMORY_NEEDED(CLASS1, CLASS2, MODE) \ +#define PA_SECONDARY_MEMORY_NEEDED(MODE, CLASS1, CLASS2) \ (MAYBE_FP_REG_CLASS_P (CLASS1) != FP_REG_CLASS_P (CLASS2) \ || MAYBE_FP_REG_CLASS_P (CLASS2) != FP_REG_CLASS_P (CLASS1)) diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index f9c7a7c..f39b672 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -178,6 +178,8 @@ static struct machine_function * pa_init_machine_status (void); static reg_class_t pa_secondary_reload (bool, rtx, reg_class_t, machine_mode, secondary_reload_info *); +static bool pa_secondary_memory_needed (machine_mode, + reg_class_t, reg_class_t); static void pa_extra_live_on_entry (bitmap); static machine_mode pa_promote_function_mode (const_tree, machine_mode, int *, @@ -377,6 +379,8 @@ static size_t n_deferred_plabels = 0; #undef TARGET_SECONDARY_RELOAD #define TARGET_SECONDARY_RELOAD pa_secondary_reload +#undef TARGET_SECONDARY_MEMORY_NEEDED +#define TARGET_SECONDARY_MEMORY_NEEDED pa_secondary_memory_needed #undef TARGET_EXTRA_LIVE_ON_ENTRY #define TARGET_EXTRA_LIVE_ON_ENTRY pa_extra_live_on_entry @@ -6189,6 +6193,20 @@ pa_secondary_reload (bool in_p, rtx x, reg_class_t rclass_i, return NO_REGS; } +/* Implement TARGET_SECONDARY_MEMORY_NEEDED. */ + +static bool +pa_secondary_memory_needed (machine_mode mode ATTRIBUTE_UNUSED, + reg_class_t class1 ATTRIBUTE_UNUSED, + reg_class_t class2 ATTRIBUTE_UNUSED) +{ +#ifdef PA_SECONDARY_MEMORY_NEEDED + return PA_SECONDARY_MEMORY_NEEDED (mode, class1, class2); +#else + return false; +#endif +} + /* Implement TARGET_EXTRA_LIVE_ON_ENTRY. The argument pointer is only marked as live on entry by df-scan when it is a fixed register. It isn't a fixed register in the 64-bit runtime, |