]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
cris-protos.h (cris_legitimate_address_p): Declare.
authorHans-Peter Nilsson <hp@axis.com>
Mon, 16 Jul 2012 03:31:12 +0000 (03:31 +0000)
committerHans-Peter Nilsson <hp@gcc.gnu.org>
Mon, 16 Jul 2012 03:31:12 +0000 (03:31 +0000)
* config/cris/cris-protos.h (cris_legitimate_address_p): Declare.
* config/cris/cris.h (CONSTANT_ADDRESS_P): Define in terms of
CONSTANT_P and cris_legitimate_address_p.
* config/cris/cris.c (cris_legitimate_address_p): Make non-static.

From-SVN: r189507

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

index a1f11250f07148133860b516b2bf7698f9148890..6452d3fc8b8032f43fb2b2a582ea9cec00bb50aa 100644 (file)
@@ -1,7 +1,11 @@
 2012-07-16  Hans-Peter Nilsson  <hp@axis.com>
 
-       * config/cris/cris.c (cris_preferred_reload_class):
-       Don't return GENERAL_REGS as preferred to MOF_SRP_REGS.
+       * config/cris/cris-protos.h (cris_legitimate_address_p): Declare.
+       * config/cris/cris.h (CONSTANT_ADDRESS_P): Define in terms of
+       CONSTANT_P and cris_legitimate_address_p.
+       * config/cris/cris.c (cris_legitimate_address_p): Make non-static.
+       (cris_preferred_reload_class): Don't return GENERAL_REGS as
+       preferred to MOF_SRP_REGS.
 
        * config/cris/cris.c (cris_init_libfuncs): Handle initialization
        of library functions for basic atomic compare-and-swap.
index d08dac5dab0aa8d35ac37458b103dcf9cb532ae4..167f14c6e9c95b1c74969a5a1fc98d56b26bc7b0 100644 (file)
@@ -40,6 +40,7 @@ extern bool cris_base_p (const_rtx, bool);
 extern bool cris_base_or_autoincr_p (const_rtx, bool);
 extern bool cris_bdap_index_p (const_rtx, bool);
 extern bool cris_biap_index_p (const_rtx, bool);
+extern bool cris_legitimate_address_p (enum machine_mode, rtx, bool);
 extern bool cris_store_multiple_op_p (rtx);
 extern bool cris_movem_load_rest_p (rtx, int);
 extern void cris_asm_output_symbol_ref (FILE *, rtx);
index d5709b34b90e9adc3589c97b2693ff2d1ba0c3ea..ea98641b9032c48fde615924a8f5f4a9036c928c 100644 (file)
@@ -127,8 +127,6 @@ static void cris_init_libfuncs (void);
 
 static reg_class_t cris_preferred_reload_class (rtx, reg_class_t);
 
-static bool cris_legitimate_address_p (enum machine_mode, rtx, bool);
-
 static int cris_register_move_cost (enum machine_mode, reg_class_t, reg_class_t);
 static int cris_memory_move_cost (enum machine_mode, reg_class_t, bool);
 static bool cris_rtx_costs (rtx, int, int, int, int *, bool);
@@ -1414,7 +1412,7 @@ cris_biap_index_p (const_rtx x, bool strict)
    here (but is thankfully a general_operand in itself).  A local PIC
    symbol is valid for the plain "symbol + offset" case.  */
 
-static bool
+bool
 cris_legitimate_address_p (enum machine_mode mode, rtx x, bool strict)
 {
   const_rtx x1, x2;
index d5cf85e4ba52fb6057ef0e22e9ae24aeaf6f7a39..0ed4ced31a3755e20a1507e5560fb17c4f71bcc7 100644 (file)
@@ -778,6 +778,9 @@ struct cum_args {int regs;};
 
 #define HAVE_POST_INCREMENT 1
 
+#define CONSTANT_ADDRESS_P(X) \
+  (CONSTANT_P (X) && cris_legitimate_address_p (QImode, X, false))
+
 /* Must be a compile-time constant, so we go with the highest value
    among all CRIS variants.  */
 #define MAX_REGS_PER_ADDRESS 2