aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@axis.com>2012-07-16 03:31:12 +0000
committerHans-Peter Nilsson <hp@gcc.gnu.org>2012-07-16 03:31:12 +0000
commita502bdb63638a07e818ee89e4c70d650c1e9db2b (patch)
tree9327509da1d06618afe61bbff201e4554848cc1b /gcc
parentff57d86657907ac69fdec1c994ea31206634f2f5 (diff)
downloadgcc-a502bdb63638a07e818ee89e4c70d650c1e9db2b.zip
gcc-a502bdb63638a07e818ee89e4c70d650c1e9db2b.tar.gz
gcc-a502bdb63638a07e818ee89e4c70d650c1e9db2b.tar.bz2
cris-protos.h (cris_legitimate_address_p): Declare.
* 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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/cris/cris-protos.h1
-rw-r--r--gcc/config/cris/cris.c4
-rw-r--r--gcc/config/cris/cris.h3
4 files changed, 11 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a1f1125..6452d3f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/config/cris/cris-protos.h b/gcc/config/cris/cris-protos.h
index d08dac5..167f14c 100644
--- a/gcc/config/cris/cris-protos.h
+++ b/gcc/config/cris/cris-protos.h
@@ -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);
diff --git a/gcc/config/cris/cris.c b/gcc/config/cris/cris.c
index d5709b3..ea98641 100644
--- a/gcc/config/cris/cris.c
+++ b/gcc/config/cris/cris.c
@@ -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;
diff --git a/gcc/config/cris/cris.h b/gcc/config/cris/cris.h
index d5cf85e..0ed4ced 100644
--- a/gcc/config/cris/cris.h
+++ b/gcc/config/cris/cris.h
@@ -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