Comments
Patch
===================================================================
@@ -324,6 +324,8 @@
static void ia64_dwarf_handle_frame_unspec (const char *, rtx, int);
static tree ia64_builtin_decl (unsigned, bool);
+
+static reg_class_t ia64_preferred_reload_class (rtx, reg_class_t);
/* Table of valid machine attributes. */
static const struct attribute_spec ia64_attribute_table[] =
@@ -595,6 +597,9 @@
#undef TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE
#define TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE ia64_override_options_after_change
+#undef TARGET_PREFERRED_RELOAD_CLASS
+#define TARGET_PREFERRED_RELOAD_CLASS ia64_preferred_reload_class
+
struct gcc_target targetm = TARGET_INITIALIZER;
typedef enum
@@ -5346,11 +5351,11 @@
return 10;
}
-/* Implement PREFERRED_RELOAD_CLASS. Place additional restrictions on RCLASS
- to use when copying X into that class. */
+/* Implement TARGET_PREFERRED_RELOAD_CLASS. Place additional restrictions
+ on RCLASS to use when copying X into that class. */
-enum reg_class
-ia64_preferred_reload_class (rtx x, enum reg_class rclass)
+static reg_class_t
+ia64_preferred_reload_class (rtx x, reg_class_t rclass)
{
switch (rclass)
{
===================================================================
@@ -849,14 +849,6 @@
This is needed for POST_MODIFY. */
#define REGNO_OK_FOR_INDEX_P(NUM) REGNO_OK_FOR_BASE_P (NUM)
-/* A C expression that places additional restrictions on the register class to
- use when it is necessary to copy value X into a register in class CLASS.
- The value is a register class; perhaps CLASS, or perhaps another, smaller
- class. */
-
-#define PREFERRED_RELOAD_CLASS(X, CLASS) \
- ia64_preferred_reload_class (X, CLASS)
-
/* You should define this macro to indicate to the reload phase that it may
need to allocate at least one register for a reload in addition to the
register to contain the data. Specifically, if copying X to a register
===================================================================
@@ -56,7 +56,6 @@
extern void ia64_print_operand_address (FILE *, rtx);
extern void ia64_print_operand (FILE *, rtx, int);
-extern enum reg_class ia64_preferred_reload_class (rtx, enum reg_class);
extern enum reg_class ia64_secondary_reload_class (enum reg_class,
enum machine_mode, rtx);
extern const char *get_bundle_name (int);
Hello. This patch removes obsolete PREFERRED_RELOAD_CLASS macro from IA64 back end in the GCC and introduces equivalent TARGET_PREFERRED_RELOAD_CLASS target hooks. Bootstrapped and regression tested on ia64-unknown-linux-gnu. OK to install? * config/ia64/ia64.h (PREFERRED_RELOAD_CLASS): Remove macros. * config/ia64/ia64-protos.h (ia64_preferred_reload_class): Remove. * config/ia64/ia64.c (TARGET_PREFERRED_RELOAD_CLASS): Define. (ia64_preferred_reload_class): Make static. Change rclass argument and result types from enum reg_class to reg_class_t. Anatoly.