h8300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Remove macro.
* 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
This commit is contained in:
parent
9ba60cb3ff
commit
f52d97dada
@ -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
|
||||
|
@ -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 *);
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
/* 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;
|
||||
}
|
||||
|
||||
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;
|
||||
|
@ -762,17 +762,6 @@ struct cum_arg
|
||||
((C) == 'W')
|
||||
|
||||
|
||||
/* 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;
|
||||
|
||||
/* Specify the machine mode that this machine uses
|
||||
for the index in the tablejump instruction. */
|
||||
#define CASE_VECTOR_MODE Pmode
|
||||
|
Loading…
Reference in New Issue
Block a user