mmix.h (REGISTER_MOVE_COST): Remove macro.
authorAnatoly Sokolov <aesok@post.ru>
Tue, 9 Aug 2011 15:09:41 +0000 (19:09 +0400)
committerAnatoly Sokolov <aesok@gcc.gnu.org>
Tue, 9 Aug 2011 15:09:41 +0000 (19:09 +0400)
* config/mmix/mmix.h (REGISTER_MOVE_COST): Remove macro.
* config/mmix/mmix-protos.h (mmix_register_move_cost): Remove.
* config/mmix/mmix.c (mmix_register_move_cost): Make static.
Change 'from' and 'to' arguments type to reg_class_t.
(TARGET_REGISTER_MOVE_COST): Define.

From-SVN: r177600

gcc/ChangeLog
gcc/config/mmix/mmix-protos.h
gcc/config/mmix/mmix.c
gcc/config/mmix/mmix.h

index 24883ea3fb385bf0b4ab5f5d40d5510c3c51c25d..a47ca453032726530d28442214caf099c20c20cc 100644 (file)
@@ -1,3 +1,11 @@
+2011-08-09  Anatoly Sokolov  <aesok@post.ru>
+
+       * config/mmix/mmix.h (REGISTER_MOVE_COST): Remove macro.
+       * config/mmix/mmix-protos.h (mmix_register_move_cost): Remove.
+       * config/mmix/mmix.c (mmix_register_move_cost): Make static.
+       Change 'from' and 'to' arguments type to reg_class_t.
+       (TARGET_REGISTER_MOVE_COST): Define.
+
 2011-08-09  Vladimir Makarov  <vmakarov@redhat.com>
 
        PR target/50026
index a6faf6e1494f2321ae6e77049ddfd220b756b44c..4e8c338b80c1698a17d4e4c26f47f23eab109023 100644 (file)
@@ -26,8 +26,6 @@ extern int mmix_starting_frame_offset (void);
 extern int mmix_function_arg_regno_p (int, int);
 extern void mmix_function_profiler (FILE *, int);
 extern int mmix_reversible_cc_mode (enum machine_mode);
-extern int mmix_register_move_cost
-  (enum machine_mode, enum reg_class, enum reg_class);
 extern const char *mmix_text_section_asm_op (void);
 extern const char *mmix_data_section_asm_op (void);
 extern void mmix_output_quoted_string (FILE *, const char *, int);
index e6cebce010e8f31bb7c84d938248ca8489dbd606..f249a66081cb98790d0219a8bcfee50a14667773 100644 (file)
@@ -141,6 +141,8 @@ static void mmix_setup_incoming_varargs
 static void mmix_file_start (void);
 static void mmix_file_end (void);
 static bool mmix_rtx_costs (rtx, int, int, int *, bool);
+static int mmix_register_move_cost (enum machine_mode,
+                                   reg_class_t, reg_class_t);
 static rtx mmix_struct_value_rtx (tree, int);
 static enum machine_mode mmix_promote_function_mode (const_tree,
                                                     enum machine_mode,
@@ -224,6 +226,9 @@ static void mmix_conditional_register_usage (void);
 #undef TARGET_ADDRESS_COST
 #define TARGET_ADDRESS_COST hook_int_rtx_bool_0
 
+#undef TARGET_REGISTER_MOVE_COST
+#define TARGET_REGISTER_MOVE_COST mmix_register_move_cost
+
 #undef TARGET_MACHINE_DEPENDENT_REORG
 #define TARGET_MACHINE_DEPENDENT_REORG mmix_reorg
 
@@ -1233,12 +1238,15 @@ mmix_rtx_costs (rtx x ATTRIBUTE_UNUSED,
   return false;
 }
 
-/* REGISTER_MOVE_COST.  */
+/* TARGET_REGISTER_MOVE_COST.
 
-int
+   The special registers can only move to and from general regs, and we
+   need to check that their constraints match, so say 3 for them.  */
+
+static int
 mmix_register_move_cost (enum machine_mode mode ATTRIBUTE_UNUSED,
-                        enum reg_class from,
-                        enum reg_class to)
+                        reg_class_t from,
+                        reg_class_t to)
 {
   return (from == GENERAL_REGS && from == to) ? 2 : 3;
 }
index 31d21b9f31d5a7fc1fd89c51bfd76bfc735048e2..787f64f4bf5557882ac7589854fe826a5417efac 100644 (file)
@@ -617,23 +617,6 @@ typedef struct { int regs; int lib; } CUMULATIVE_ARGS;
 
 /* Node: Costs */
 
-/* The special registers can only move to and from general regs, and we
-   need to check that their constraints match, so say 3 for them.  */
-/* WARNING: gcc-2.7.2.2 i686-pc-linux-gnulibc1 (as shipped with RH 4.2)
-   miscompiles reload1.c:reload_cse_simplify_set; a call to
-   reload_cse_regno_equal_p is missing when checking if a substitution of
-   a register setting is valid if this is defined to just the expression
-   in mmix_register_move_cost.
-
-   Symptom: a (all?) register setting is optimized away for e.g.
-   "char *p1(char *p) { return p+1; }" and the value of register zero ($0)
-   is returned.
-
-   We can workaround by making this a function call - unknown if this
-   causes dire speed effects.  */
-#define REGISTER_MOVE_COST(MODE, FROM, TO) \
- mmix_register_move_cost (MODE, FROM, TO)
-
 #define SLOW_BYTE_ACCESS 0