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:
Anatoly Sokolov 2011-03-31 19:22:32 +04:00 committed by Anatoly Sokolov
parent 9ba60cb3ff
commit f52d97dada
4 changed files with 29 additions and 14 deletions

View 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

View 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 *);

View 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;
}
/* 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;

View File

@ -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