h8300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Remove macro.
authorAnatoly Sokolov <aesok@post.ru>
Thu, 31 Mar 2011 15:22:32 +0000 (19:22 +0400)
committerAnatoly Sokolov <aesok@gcc.gnu.org>
Thu, 31 Mar 2011 15:22:32 +0000 (19:22 +0400)
* config/h8300/h8300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Remove macro.
* config/h8300/h8300-protos.h (h8300_get_index): Remove.
* config/h8300/h8300.c (TARGET_MODE_DEPENDENT_ADDRESS_P): Define.
(h8300_mode_dependent_address_p): New function.
(h8300_get_index): Make static.

From-SVN: r171787

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

index f33051f814f3742c3d1184e90a0a6d51fb93b9a6..a4984dc269ccc9cc1d87f44ba851958fa2f1e5c0 100644 (file)
@@ -1,3 +1,11 @@
+2011-03-31  Anatoly Sokolov  <aesok@post.ru>
+
+       * config/h8300/h8300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Remove macro.
+       * config/h8300/h8300-protos.h (h8300_get_index): Remove.
+       * config/h8300/h8300.c (TARGET_MODE_DEPENDENT_ADDRESS_P): Define.
+       (h8300_mode_dependent_address_p): New function.
+       (h8300_get_index): Make static.
+
 2011-03-31  Jeff Law  <law@redhat.com>
 
        * tree-ssa-forwprop.c (forward_propagate_into_cond): Avoid 
index 1211c63897ab96ff83419975a202cbdb2b8b8a48..131410172b9d7144cfe1d0090eefaf9a554b5dd1 100644 (file)
@@ -1,6 +1,6 @@
 /* Definitions of target machine for GNU compiler.
    Renesas H8/300 version
-   Copyright (C) 2000, 2002, 2003, 2004, 2005, 2007, 2009, 2010
+   Copyright (C) 2000, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011
    Free Software Foundation, Inc.
    Contributed by Steve Chamberlain (sac@cygnus.com),
    Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
@@ -110,7 +110,6 @@ struct cpp_reader;
 extern void h8300_pr_interrupt (struct cpp_reader *);
 extern void h8300_pr_saveall (struct cpp_reader *);
 extern enum reg_class  h8300_reg_class_from_letter (int);
-extern rtx             h8300_get_index (rtx, enum machine_mode mode, int *);
 extern unsigned int    h8300_insn_length_from_table (rtx, rtx *);
 extern const char *    output_h8sx_shift (rtx *, int, int);
 extern bool            h8300_operands_match_p (rtx *);
index 0e44a3ab425d5a4ba75f1f09f3ece62568c3e696..6649b3fb52c3b7c5720c5fc3c512160d4e59ae41 100644 (file)
@@ -113,6 +113,7 @@ static unsigned int  h8300_binary_length          (rtx, const h8300_length_table
 static bool          h8300_short_move_mem_p       (rtx, enum rtx_code);
 static unsigned int  h8300_move_length            (rtx *, const h8300_length_table *);
 static bool         h8300_hard_regno_scratch_ok  (unsigned int);
+static rtx          h8300_get_index (rtx, enum machine_mode mode, int *);
 
 /* CPU_TYPE, says what cpu we're compiling for.  */
 int cpu_type;
@@ -2094,7 +2095,7 @@ notice_update_cc (rtx body, rtx insn)
    MODE is the mode of the value being accessed.  It can be VOIDmode
    if the address is known to be valid, but its mode is unknown.  */
 
-rtx
+static rtx
 h8300_get_index (rtx x, enum machine_mode mode, int *size)
 {
   int dummy, factor;
@@ -2156,6 +2157,21 @@ h8300_get_index (rtx x, enum machine_mode mode, int *size)
   return x;
 }
 \f
+/* Worker function for TARGET_MODE_DEPENDENT_ADDRESS_P.
+
+   On the H8/300, the predecrement and postincrement address depend thus
+   (the amount of decrement or increment being the length of the operand).  */
+
+static bool
+h8300_mode_dependent_address_p (const_rtx addr)
+{
+  if (GET_CODE (addr) == PLUS
+      && h8300_get_index (XEXP (addr, 0), VOIDmode, 0) != XEXP (addr, 0))
+    return true;
+
+  return false;
+}
+\f
 static const h8300_length_table addb_length_table =
 {
   /* #xx  Rs   @aa  @Rs  @xx  */
@@ -6026,4 +6042,7 @@ h8300_trampoline_init (rtx m_tramp, tree fndecl, rtx cxt)
 #undef TARGET_EXCEPT_UNWIND_INFO
 #define TARGET_EXCEPT_UNWIND_INFO sjlj_except_unwind_info
 
+#undef TARGET_MODE_DEPENDENT_ADDRESS_P
+#define TARGET_MODE_DEPENDENT_ADDRESS_P h8300_mode_dependent_address_p
+
 struct gcc_target targetm = TARGET_INITIALIZER;
index 837ecd0c3cb2d7f6e23347f7f358d0433ae3428a..ce81dcd1d7859338dea119b10da3a8604440b9ba 100644 (file)
@@ -762,17 +762,6 @@ struct cum_arg
   ((C) == 'W')
 
 \f
-/* Go to LABEL if ADDR (a legitimate address expression)
-   has an effect that depends on the machine mode it is used for.
-
-   On the H8/300, the predecrement and postincrement address depend thus
-   (the amount of decrement or increment being the length of the operand).  */
-
-#define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR, LABEL) \
-  if (GET_CODE (ADDR) == PLUS \
-      && h8300_get_index (XEXP (ADDR, 0), VOIDmode, 0) != XEXP (ADDR, 0)) \
-    goto LABEL;
-\f
 /* Specify the machine mode that this machine uses
    for the index in the tablejump instruction.  */
 #define CASE_VECTOR_MODE Pmode