Commit aa4a0061 by David Malcolm Committed by David Malcolm

config/mep: Use rtx_insn and rtx_code_label

gcc/
	* config/mep/mep-protos.h (mep_mulr_source): Strengthen first
	param from rtx to rtx_insn *.
	(mep_reuse_lo): Likewise for third param.
	(mep_use_post_modify_p): Likewise for first param.
	(mep_core_address_length): Likewise.
	(mep_cop_address_length): Likewise.
	(mep_final_prescan_insn): Likewise.
	(mep_store_data_bypass_p): Likewise for both params.
	(mep_mul_hilo_bypass_p): Likewise.
	(mep_ipipe_ldc_p): Likewise for param.

	* config/mep/mep.c (mep_mulr_source): Likewise for param "insn".
	(mep_rewrite_mult): Likewise.
	(mep_rewrite_mulsi3): Likewise.
	(mep_rewrite_maddsi3): Likewise.
	(mep_reuse_lo_p_1): Likewise.
	(mep_reuse_lo_p): Likewise.
	(mep_frame_expr): Likewise.
	(mep_make_parallel): Likewise for both params.
	(mep_use_post_modify_p_1): Likewise for param "set_insn" and
	local "insn".
	(mep_use_post_modify_p): Likewise for param "insn".
	(mep_core_address_length): Likewise.
	(mep_cop_address_length): Likewise.
	(mep_reg_set_in_function): Likewise for local "insn".
	(mep_asm_without_operands_p): Likewise.
	(F): Likewise for return type and param "x".
	(add_constant): Likewise for local "insn".
	(maybe_dead_move): Likewise for return type and local "insn".
	(mep_expand_prologue): Likewise for local "insn".
	(mep_final_prescan_insn): Likewise for param "insn".
	(mep_reorg_regmove): Likewise for param "insns" and locals "insn",
	"next", "follow", "x".
	(mep_insert_repeat_label_last): Likewise for return type, param
	"last_insn", and locals "next", "prev".  Strengthen param "label"
	from rtx to rtx_code_label *.
	(struct mep_doloop_begin): Strengthen field "insn" from rtx to
	rtx_insn *.
	(struct mep_doloop_end): Likewise for fields "insn" and
	"fallthrough".
	(mep_reorg_repeat): Likewise for param "insns" and local "insn".
	Strengthen local "repeat_label" from rtx to rtx_code_label *.
	(mep_invertable_branch_p): Strengthen param "insn" from rtx to
	rtx_insn *.
	(mep_invert_branch): Likewise for params "insn" and "after".
	(mep_reorg_erepeat): Likewise for param "insns" and locals
	"insn", "prev", "new_last", "barrier", "user".  Strengthen local
	"l" from rtx to rtx_code_label *.
	(mep_jmp_return_reorg): Strengthen param "insns" and local "insn"
	from rtx to rtx_insn *.
	(mep_reorg_addcombine): Likewise for param "insns" and locals
	"i", "n".
	(add_sp_insn_p): Likewise for param "insn".
	(mep_reorg_noframe): Likewise for param "insns" and locals
	"start_frame_insn", "end_frame_insn", "next".
	(mep_reorg): Likewise for local "insns".
	(mep_store_data_bypass_1): Likewise for param "prev".  Add checked
	cast.
	(mep_store_data_bypass_p): Likewise for params "prev", "insn".
	(mep_mul_hilo_bypass_p): Likewise.
	(mep_ipipe_ldc_p): Likewise for param "insn".
	(mep_make_bundle): Likewise for return type, param "cop" and local
	"insn", splitting out the latter into a new local "seq" for when it
	is a SEQUENCE rather than an insn.
	(core_insn_p): Likewise for param "insn".
	(mep_bundle_insns): Likewise for param "insns" and locals "insn",
	"last", "first", "note", "prev", "core_insn".

From-SVN: r214448
parent c85e862a
2014-08-25 David Malcolm <dmalcolm@redhat.com> 2014-08-25 David Malcolm <dmalcolm@redhat.com>
* config/mep/mep-protos.h (mep_mulr_source): Strengthen first
param from rtx to rtx_insn *.
(mep_reuse_lo): Likewise for third param.
(mep_use_post_modify_p): Likewise for first param.
(mep_core_address_length): Likewise.
(mep_cop_address_length): Likewise.
(mep_final_prescan_insn): Likewise.
(mep_store_data_bypass_p): Likewise for both params.
(mep_mul_hilo_bypass_p): Likewise.
(mep_ipipe_ldc_p): Likewise for param.
* config/mep/mep.c (mep_mulr_source): Likewise for param "insn".
(mep_rewrite_mult): Likewise.
(mep_rewrite_mulsi3): Likewise.
(mep_rewrite_maddsi3): Likewise.
(mep_reuse_lo_p_1): Likewise.
(mep_reuse_lo_p): Likewise.
(mep_frame_expr): Likewise.
(mep_make_parallel): Likewise for both params.
(mep_use_post_modify_p_1): Likewise for param "set_insn" and
local "insn".
(mep_use_post_modify_p): Likewise for param "insn".
(mep_core_address_length): Likewise.
(mep_cop_address_length): Likewise.
(mep_reg_set_in_function): Likewise for local "insn".
(mep_asm_without_operands_p): Likewise.
(F): Likewise for return type and param "x".
(add_constant): Likewise for local "insn".
(maybe_dead_move): Likewise for return type and local "insn".
(mep_expand_prologue): Likewise for local "insn".
(mep_final_prescan_insn): Likewise for param "insn".
(mep_reorg_regmove): Likewise for param "insns" and locals "insn",
"next", "follow", "x".
(mep_insert_repeat_label_last): Likewise for return type, param
"last_insn", and locals "next", "prev". Strengthen param "label"
from rtx to rtx_code_label *.
(struct mep_doloop_begin): Strengthen field "insn" from rtx to
rtx_insn *.
(struct mep_doloop_end): Likewise for fields "insn" and
"fallthrough".
(mep_reorg_repeat): Likewise for param "insns" and local "insn".
Strengthen local "repeat_label" from rtx to rtx_code_label *.
(mep_invertable_branch_p): Strengthen param "insn" from rtx to
rtx_insn *.
(mep_invert_branch): Likewise for params "insn" and "after".
(mep_reorg_erepeat): Likewise for param "insns" and locals
"insn", "prev", "new_last", "barrier", "user". Strengthen local
"l" from rtx to rtx_code_label *.
(mep_jmp_return_reorg): Strengthen param "insns" and local "insn"
from rtx to rtx_insn *.
(mep_reorg_addcombine): Likewise for param "insns" and locals
"i", "n".
(add_sp_insn_p): Likewise for param "insn".
(mep_reorg_noframe): Likewise for param "insns" and locals
"start_frame_insn", "end_frame_insn", "next".
(mep_reorg): Likewise for local "insns".
(mep_store_data_bypass_1): Likewise for param "prev". Add checked
cast.
(mep_store_data_bypass_p): Likewise for params "prev", "insn".
(mep_mul_hilo_bypass_p): Likewise.
(mep_ipipe_ldc_p): Likewise for param "insn".
(mep_make_bundle): Likewise for return type, param "cop" and local
"insn", splitting out the latter into a new local "seq" for when it
is a SEQUENCE rather than an insn.
(core_insn_p): Likewise for param "insn".
(mep_bundle_insns): Likewise for param "insns" and locals "insn",
"last", "first", "note", "prev", "core_insn".
2014-08-25 David Malcolm <dmalcolm@redhat.com>
* config/m68k/m68k-protos.h (output_btst): Strengthen param 4 from * config/m68k/m68k-protos.h (output_btst): Strengthen param 4 from
rtx to rtx_insn *. rtx to rtx_insn *.
(strict_low_part_peephole_ok): Likewise for param 2 "first_insn". (strict_low_part_peephole_ok): Likewise for param 2 "first_insn".
......
...@@ -19,9 +19,9 @@ along with GCC; see the file COPYING3. If not see ...@@ -19,9 +19,9 @@ along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */ <http://www.gnu.org/licenses/>. */
extern int mep_regno_reg_class (int); extern int mep_regno_reg_class (int);
extern rtx mep_mulr_source (rtx, rtx, rtx, rtx); extern rtx mep_mulr_source (rtx_insn *, rtx, rtx, rtx);
extern bool mep_reuse_lo_p (rtx, rtx, rtx, bool); extern bool mep_reuse_lo_p (rtx, rtx, rtx_insn *, bool);
extern bool mep_use_post_modify_p (rtx, rtx, rtx); extern bool mep_use_post_modify_p (rtx_insn *, rtx, rtx);
extern bool mep_allow_clip (rtx, rtx, int); extern bool mep_allow_clip (rtx, rtx, int);
extern bool mep_bit_position_p (rtx, bool); extern bool mep_bit_position_p (rtx, bool);
extern bool mep_split_mov (rtx *, int); extern bool mep_split_mov (rtx *, int);
...@@ -31,8 +31,8 @@ extern bool mep_multi_slot (rtx); ...@@ -31,8 +31,8 @@ extern bool mep_multi_slot (rtx);
extern bool mep_legitimate_address (enum machine_mode, rtx, int); extern bool mep_legitimate_address (enum machine_mode, rtx, int);
extern int mep_legitimize_address (rtx *, rtx, enum machine_mode); extern int mep_legitimize_address (rtx *, rtx, enum machine_mode);
extern int mep_legitimize_reload_address (rtx *, enum machine_mode, int, /*enum reload_type*/ int, int); extern int mep_legitimize_reload_address (rtx *, enum machine_mode, int, /*enum reload_type*/ int, int);
extern int mep_core_address_length (rtx, int); extern int mep_core_address_length (rtx_insn *, int);
extern int mep_cop_address_length (rtx, int); extern int mep_cop_address_length (rtx_insn *, int);
extern bool mep_expand_mov (rtx *, enum machine_mode); extern bool mep_expand_mov (rtx *, enum machine_mode);
extern bool mep_mov_ok (rtx *, enum machine_mode); extern bool mep_mov_ok (rtx *, enum machine_mode);
extern void mep_split_wide_move (rtx *, enum machine_mode); extern void mep_split_wide_move (rtx *, enum machine_mode);
...@@ -65,7 +65,7 @@ extern void mep_function_profiler (FILE *); ...@@ -65,7 +65,7 @@ extern void mep_function_profiler (FILE *);
extern const char *mep_emit_bb_trace_ret (void); extern const char *mep_emit_bb_trace_ret (void);
extern void mep_print_operand_address (FILE *, rtx); extern void mep_print_operand_address (FILE *, rtx);
extern void mep_print_operand (FILE *, rtx, int); extern void mep_print_operand (FILE *, rtx, int);
extern void mep_final_prescan_insn (rtx, rtx *, int); extern void mep_final_prescan_insn (rtx_insn *, rtx *, int);
extern void mep_init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree); extern void mep_init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree);
extern bool mep_return_in_memory (const_tree, const_tree); extern bool mep_return_in_memory (const_tree, const_tree);
extern rtx mep_function_value (const_tree, const_tree); extern rtx mep_function_value (const_tree, const_tree);
...@@ -79,9 +79,9 @@ extern void mep_output_aligned_common (FILE *, tree, const char *, ...@@ -79,9 +79,9 @@ extern void mep_output_aligned_common (FILE *, tree, const char *,
int, int, int); int, int, int);
extern void mep_emit_doloop (rtx *, int); extern void mep_emit_doloop (rtx *, int);
extern bool mep_vliw_function_p (tree); extern bool mep_vliw_function_p (tree);
extern bool mep_store_data_bypass_p (rtx, rtx); extern bool mep_store_data_bypass_p (rtx_insn *, rtx_insn *);
extern bool mep_mul_hilo_bypass_p (rtx, rtx); extern bool mep_mul_hilo_bypass_p (rtx_insn *, rtx_insn *);
extern bool mep_ipipe_ldc_p (rtx); extern bool mep_ipipe_ldc_p (rtx_insn *);
extern bool mep_emit_intrinsic (int, const rtx *); extern bool mep_emit_intrinsic (int, const rtx *);
extern bool mep_expand_unary_intrinsic (int, rtx *); extern bool mep_expand_unary_intrinsic (int, rtx *);
extern bool mep_expand_binary_intrinsic (int, int, int, int, rtx *); extern bool mep_expand_binary_intrinsic (int, int, int, int, rtx *);
......
...@@ -153,10 +153,10 @@ static bool symbolref_p (rtx); ...@@ -153,10 +153,10 @@ static bool symbolref_p (rtx);
static void encode_pattern_1 (rtx); static void encode_pattern_1 (rtx);
static void encode_pattern (rtx); static void encode_pattern (rtx);
static bool const_in_range (rtx, int, int); static bool const_in_range (rtx, int, int);
static void mep_rewrite_mult (rtx, rtx); static void mep_rewrite_mult (rtx_insn *, rtx);
static void mep_rewrite_mulsi3 (rtx, rtx, rtx, rtx); static void mep_rewrite_mulsi3 (rtx_insn *, rtx, rtx, rtx);
static void mep_rewrite_maddsi3 (rtx, rtx, rtx, rtx, rtx); static void mep_rewrite_maddsi3 (rtx_insn *, rtx, rtx, rtx, rtx);
static bool mep_reuse_lo_p_1 (rtx, rtx, rtx, bool); static bool mep_reuse_lo_p_1 (rtx, rtx, rtx_insn *, bool);
static bool move_needs_splitting (rtx, rtx, enum machine_mode); static bool move_needs_splitting (rtx, rtx, enum machine_mode);
static bool mep_expand_setcc_1 (enum rtx_code, rtx, rtx, rtx); static bool mep_expand_setcc_1 (enum rtx_code, rtx, rtx, rtx);
static bool mep_nongeneral_reg (rtx); static bool mep_nongeneral_reg (rtx);
...@@ -171,9 +171,9 @@ static bool mep_reg_set_p (rtx, rtx); ...@@ -171,9 +171,9 @@ static bool mep_reg_set_p (rtx, rtx);
static bool mep_reg_set_in_function (int); static bool mep_reg_set_in_function (int);
static bool mep_interrupt_saved_reg (int); static bool mep_interrupt_saved_reg (int);
static bool mep_call_saves_register (int); static bool mep_call_saves_register (int);
static rtx F (rtx); static rtx_insn *F (rtx_insn *);
static void add_constant (int, int, int, int); static void add_constant (int, int, int, int);
static rtx maybe_dead_move (rtx, rtx, bool); static rtx_insn *maybe_dead_move (rtx, rtx, bool);
static void mep_reload_pointer (int, const char *); static void mep_reload_pointer (int, const char *);
static void mep_start_function (FILE *, HOST_WIDE_INT); static void mep_start_function (FILE *, HOST_WIDE_INT);
static bool mep_function_ok_for_sibcall (tree, tree); static bool mep_function_ok_for_sibcall (tree, tree);
...@@ -198,14 +198,15 @@ static void mep_unique_section (tree, int); ...@@ -198,14 +198,15 @@ static void mep_unique_section (tree, int);
static unsigned int mep_section_type_flags (tree, const char *, int); static unsigned int mep_section_type_flags (tree, const char *, int);
static void mep_asm_named_section (const char *, unsigned int, tree); static void mep_asm_named_section (const char *, unsigned int, tree);
static bool mep_mentioned_p (rtx, rtx, int); static bool mep_mentioned_p (rtx, rtx, int);
static void mep_reorg_regmove (rtx); static void mep_reorg_regmove (rtx_insn *);
static rtx mep_insert_repeat_label_last (rtx, rtx, bool, bool); static rtx_insn *mep_insert_repeat_label_last (rtx_insn *, rtx_code_label *,
static void mep_reorg_repeat (rtx); bool, bool);
static bool mep_invertable_branch_p (rtx); static void mep_reorg_repeat (rtx_insn *);
static void mep_invert_branch (rtx, rtx); static bool mep_invertable_branch_p (rtx_insn *);
static void mep_reorg_erepeat (rtx); static void mep_invert_branch (rtx_insn *, rtx_insn *);
static void mep_jmp_return_reorg (rtx); static void mep_reorg_erepeat (rtx_insn *);
static void mep_reorg_addcombine (rtx); static void mep_jmp_return_reorg (rtx_insn *);
static void mep_reorg_addcombine (rtx_insn *);
static void mep_reorg (void); static void mep_reorg (void);
static void mep_init_intrinsics (void); static void mep_init_intrinsics (void);
static void mep_init_builtins (void); static void mep_init_builtins (void);
...@@ -222,8 +223,8 @@ static int mep_issue_rate (void); ...@@ -222,8 +223,8 @@ static int mep_issue_rate (void);
static rtx mep_find_ready_insn (rtx *, int, enum attr_slot, int); static rtx mep_find_ready_insn (rtx *, int, enum attr_slot, int);
static void mep_move_ready_insn (rtx *, int, rtx); static void mep_move_ready_insn (rtx *, int, rtx);
static int mep_sched_reorder (FILE *, int, rtx *, int *, int); static int mep_sched_reorder (FILE *, int, rtx *, int *, int);
static rtx mep_make_bundle (rtx, rtx); static rtx_insn *mep_make_bundle (rtx, rtx_insn *);
static void mep_bundle_insns (rtx); static void mep_bundle_insns (rtx_insn *);
static bool mep_rtx_cost (rtx, int, int, int, int *, bool); static bool mep_rtx_cost (rtx, int, int, int, int *, bool);
static int mep_address_cost (rtx, enum machine_mode, addr_space_t, bool); static int mep_address_cost (rtx, enum machine_mode, addr_space_t, bool);
static void mep_setup_incoming_varargs (cumulative_args_t, enum machine_mode, static void mep_setup_incoming_varargs (cumulative_args_t, enum machine_mode,
...@@ -623,7 +624,7 @@ const_in_range (rtx x, int minv, int maxv) ...@@ -623,7 +624,7 @@ const_in_range (rtx x, int minv, int maxv)
at the end of the insn stream. */ at the end of the insn stream. */
rtx rtx
mep_mulr_source (rtx insn, rtx dest, rtx src1, rtx src2) mep_mulr_source (rtx_insn *insn, rtx dest, rtx src1, rtx src2)
{ {
if (rtx_equal_p (dest, src1)) if (rtx_equal_p (dest, src1))
return src2; return src2;
...@@ -644,7 +645,7 @@ mep_mulr_source (rtx insn, rtx dest, rtx src1, rtx src2) ...@@ -644,7 +645,7 @@ mep_mulr_source (rtx insn, rtx dest, rtx src1, rtx src2)
to (clobber (reg:SI HI_REGNO)). */ to (clobber (reg:SI HI_REGNO)). */
static void static void
mep_rewrite_mult (rtx insn, rtx pattern) mep_rewrite_mult (rtx_insn *insn, rtx pattern)
{ {
rtx hi_clobber; rtx hi_clobber;
...@@ -659,7 +660,7 @@ mep_rewrite_mult (rtx insn, rtx pattern) ...@@ -659,7 +660,7 @@ mep_rewrite_mult (rtx insn, rtx pattern)
store the result in DEST if nonnull. */ store the result in DEST if nonnull. */
static void static void
mep_rewrite_mulsi3 (rtx insn, rtx dest, rtx src1, rtx src2) mep_rewrite_mulsi3 (rtx_insn *insn, rtx dest, rtx src1, rtx src2)
{ {
rtx lo, pattern; rtx lo, pattern;
...@@ -677,7 +678,7 @@ mep_rewrite_mulsi3 (rtx insn, rtx dest, rtx src1, rtx src2) ...@@ -677,7 +678,7 @@ mep_rewrite_mulsi3 (rtx insn, rtx dest, rtx src1, rtx src2)
be deleted by a peephole2 if SRC3 is already in $lo. */ be deleted by a peephole2 if SRC3 is already in $lo. */
static void static void
mep_rewrite_maddsi3 (rtx insn, rtx dest, rtx src1, rtx src2, rtx src3) mep_rewrite_maddsi3 (rtx_insn *insn, rtx dest, rtx src1, rtx src2, rtx src3)
{ {
rtx lo, pattern; rtx lo, pattern;
...@@ -719,7 +720,7 @@ mep_rewrite_maddsi3 (rtx insn, rtx dest, rtx src1, rtx src2, rtx src3) ...@@ -719,7 +720,7 @@ mep_rewrite_maddsi3 (rtx insn, rtx dest, rtx src1, rtx src2, rtx src3)
if GPR is no longer used. */ if GPR is no longer used. */
static bool static bool
mep_reuse_lo_p_1 (rtx lo, rtx gpr, rtx insn, bool gpr_dead_p) mep_reuse_lo_p_1 (rtx lo, rtx gpr, rtx_insn *insn, bool gpr_dead_p)
{ {
do do
{ {
...@@ -775,7 +776,7 @@ mep_reuse_lo_p_1 (rtx lo, rtx gpr, rtx insn, bool gpr_dead_p) ...@@ -775,7 +776,7 @@ mep_reuse_lo_p_1 (rtx lo, rtx gpr, rtx insn, bool gpr_dead_p)
/* A wrapper around mep_reuse_lo_p_1 that preserves recog_data. */ /* A wrapper around mep_reuse_lo_p_1 that preserves recog_data. */
bool bool
mep_reuse_lo_p (rtx lo, rtx gpr, rtx insn, bool gpr_dead_p) mep_reuse_lo_p (rtx lo, rtx gpr, rtx_insn *insn, bool gpr_dead_p)
{ {
bool result = mep_reuse_lo_p_1 (lo, gpr, insn, gpr_dead_p); bool result = mep_reuse_lo_p_1 (lo, gpr, insn, gpr_dead_p);
extract_insn (insn); extract_insn (insn);
...@@ -856,7 +857,7 @@ mep_use_post_modify_for_set_p (rtx set, rtx gpr, rtx offset) ...@@ -856,7 +857,7 @@ mep_use_post_modify_for_set_p (rtx set, rtx gpr, rtx offset)
/* Return the effect of frame-related instruction INSN. */ /* Return the effect of frame-related instruction INSN. */
static rtx static rtx
mep_frame_expr (rtx insn) mep_frame_expr (rtx_insn *insn)
{ {
rtx note, expr; rtx note, expr;
...@@ -870,7 +871,7 @@ mep_frame_expr (rtx insn) ...@@ -870,7 +871,7 @@ mep_frame_expr (rtx insn)
new pattern in INSN1; INSN2 will be deleted by the caller. */ new pattern in INSN1; INSN2 will be deleted by the caller. */
static void static void
mep_make_parallel (rtx insn1, rtx insn2) mep_make_parallel (rtx_insn *insn1, rtx_insn *insn2)
{ {
rtx expr; rtx expr;
...@@ -895,9 +896,9 @@ mep_make_parallel (rtx insn1, rtx insn2) ...@@ -895,9 +896,9 @@ mep_make_parallel (rtx insn1, rtx insn2)
be persuaded to do SET_INSN as a side-effect. Return true if so. */ be persuaded to do SET_INSN as a side-effect. Return true if so. */
static bool static bool
mep_use_post_modify_p_1 (rtx set_insn, rtx reg, rtx offset) mep_use_post_modify_p_1 (rtx_insn *set_insn, rtx reg, rtx offset)
{ {
rtx insn; rtx_insn *insn;
insn = set_insn; insn = set_insn;
do do
...@@ -924,7 +925,7 @@ mep_use_post_modify_p_1 (rtx set_insn, rtx reg, rtx offset) ...@@ -924,7 +925,7 @@ mep_use_post_modify_p_1 (rtx set_insn, rtx reg, rtx offset)
/* A wrapper around mep_use_post_modify_p_1 that preserves recog_data. */ /* A wrapper around mep_use_post_modify_p_1 that preserves recog_data. */
bool bool
mep_use_post_modify_p (rtx insn, rtx reg, rtx offset) mep_use_post_modify_p (rtx_insn *insn, rtx reg, rtx offset)
{ {
bool result = mep_use_post_modify_p_1 (insn, reg, offset); bool result = mep_use_post_modify_p_1 (insn, reg, offset);
extract_insn (insn); extract_insn (insn);
...@@ -1235,7 +1236,7 @@ mep_legitimize_reload_address (rtx *x, enum machine_mode mode, int opnum, ...@@ -1235,7 +1236,7 @@ mep_legitimize_reload_address (rtx *x, enum machine_mode mode, int opnum,
} }
int int
mep_core_address_length (rtx insn, int opn) mep_core_address_length (rtx_insn *insn, int opn)
{ {
rtx set = single_set (insn); rtx set = single_set (insn);
rtx mem = XEXP (set, opn); rtx mem = XEXP (set, opn);
...@@ -1282,7 +1283,7 @@ mep_core_address_length (rtx insn, int opn) ...@@ -1282,7 +1283,7 @@ mep_core_address_length (rtx insn, int opn)
} }
int int
mep_cop_address_length (rtx insn, int opn) mep_cop_address_length (rtx_insn *insn, int opn)
{ {
rtx set = single_set (insn); rtx set = single_set (insn);
rtx mem = XEXP (set, opn); rtx mem = XEXP (set, opn);
...@@ -2337,7 +2338,8 @@ mep_reg_set_p (rtx reg, rtx insn) ...@@ -2337,7 +2338,8 @@ mep_reg_set_p (rtx reg, rtx insn)
static bool static bool
mep_reg_set_in_function (int regno) mep_reg_set_in_function (int regno)
{ {
rtx reg, insn; rtx reg;
rtx_insn *insn;
if (mep_interrupt_p () && df_regs_ever_live_p(regno)) if (mep_interrupt_p () && df_regs_ever_live_p(regno))
return true; return true;
...@@ -2365,7 +2367,7 @@ mep_asm_without_operands_p (void) ...@@ -2365,7 +2367,7 @@ mep_asm_without_operands_p (void)
{ {
if (cfun->machine->asms_without_operands == 0) if (cfun->machine->asms_without_operands == 0)
{ {
rtx insn; rtx_insn *insn;
push_topmost_sequence (); push_topmost_sequence ();
insn = get_insns (); insn = get_insns ();
...@@ -2536,8 +2538,8 @@ mep_elimination_offset (int from, int to) ...@@ -2536,8 +2538,8 @@ mep_elimination_offset (int from, int to)
gcc_unreachable (); gcc_unreachable ();
} }
static rtx static rtx_insn *
F (rtx x) F (rtx_insn *x)
{ {
RTX_FRAME_RELATED_P (x) = 1; RTX_FRAME_RELATED_P (x) = 1;
return x; return x;
...@@ -2551,7 +2553,7 @@ F (rtx x) ...@@ -2551,7 +2553,7 @@ F (rtx x)
static void static void
add_constant (int dest, int src, int value, int mark_frame) add_constant (int dest, int src, int value, int mark_frame)
{ {
rtx insn; rtx_insn *insn;
int hi, lo; int hi, lo;
if (src == dest && value == 0) if (src == dest && value == 0)
...@@ -2611,10 +2613,10 @@ add_constant (int dest, int src, int value, int mark_frame) ...@@ -2611,10 +2613,10 @@ add_constant (int dest, int src, int value, int mark_frame)
/* Move SRC to DEST. Mark the move as being potentially dead if /* Move SRC to DEST. Mark the move as being potentially dead if
MAYBE_DEAD_P. */ MAYBE_DEAD_P. */
static rtx static rtx_insn *
maybe_dead_move (rtx dest, rtx src, bool ATTRIBUTE_UNUSED maybe_dead_p) maybe_dead_move (rtx dest, rtx src, bool ATTRIBUTE_UNUSED maybe_dead_p)
{ {
rtx insn = emit_move_insn (dest, src); rtx_insn *insn = emit_move_insn (dest, src);
#if 0 #if 0
if (maybe_dead_p) if (maybe_dead_p)
REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_MAYBE_DEAD, const0_rtx, NULL); REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_MAYBE_DEAD, const0_rtx, NULL);
...@@ -2739,7 +2741,7 @@ mep_expand_prologue (void) ...@@ -2739,7 +2741,7 @@ mep_expand_prologue (void)
F(maybe_dead_move (mem, gen_rtx_REG (rmode, i), maybe_dead_p)); F(maybe_dead_move (mem, gen_rtx_REG (rmode, i), maybe_dead_p));
else if (rmode == DImode) else if (rmode == DImode)
{ {
rtx insn; rtx_insn *insn;
int be = TARGET_BIG_ENDIAN ? 4 : 0; int be = TARGET_BIG_ENDIAN ? 4 : 0;
mem = gen_rtx_MEM (SImode, mem = gen_rtx_MEM (SImode,
...@@ -2773,7 +2775,7 @@ mep_expand_prologue (void) ...@@ -2773,7 +2775,7 @@ mep_expand_prologue (void)
} }
else else
{ {
rtx insn; rtx_insn *insn;
maybe_dead_move (gen_rtx_REG (rmode, REGSAVE_CONTROL_TEMP), maybe_dead_move (gen_rtx_REG (rmode, REGSAVE_CONTROL_TEMP),
gen_rtx_REG (rmode, i), gen_rtx_REG (rmode, i),
maybe_dead_p); maybe_dead_p);
...@@ -3370,7 +3372,7 @@ mep_print_operand (FILE *file, rtx x, int code) ...@@ -3370,7 +3372,7 @@ mep_print_operand (FILE *file, rtx x, int code)
} }
void void
mep_final_prescan_insn (rtx insn, rtx *operands ATTRIBUTE_UNUSED, mep_final_prescan_insn (rtx_insn *insn, rtx *operands ATTRIBUTE_UNUSED,
int noperands ATTRIBUTE_UNUSED) int noperands ATTRIBUTE_UNUSED)
{ {
/* Despite the fact that MeP is perfectly capable of branching and /* Despite the fact that MeP is perfectly capable of branching and
...@@ -4890,9 +4892,10 @@ mep_compatible_reg_class (int r1, int r2) ...@@ -4890,9 +4892,10 @@ mep_compatible_reg_class (int r1, int r2)
} }
static void static void
mep_reorg_regmove (rtx insns) mep_reorg_regmove (rtx_insn *insns)
{ {
rtx insn, next, pat, follow, *where; rtx_insn *insn, *next, *follow;
rtx pat, *where;
int count = 0, done = 0, replace, before = 0; int count = 0, done = 0, replace, before = 0;
if (dump_file) if (dump_file)
...@@ -4968,7 +4971,7 @@ mep_reorg_regmove (rtx insns) ...@@ -4968,7 +4971,7 @@ mep_reorg_regmove (rtx insns)
{ {
if (dump_file) if (dump_file)
{ {
rtx x; rtx_insn *x;
fprintf (dump_file, "----- Candidate for superfluous move deletion:\n\n"); fprintf (dump_file, "----- Candidate for superfluous move deletion:\n\n");
for (x = insn; x ;x = NEXT_INSN (x)) for (x = insn; x ;x = NEXT_INSN (x))
...@@ -5012,11 +5015,11 @@ mep_reorg_regmove (rtx insns) ...@@ -5012,11 +5015,11 @@ mep_reorg_regmove (rtx insns)
Return the last instruction in the adjusted loop. */ Return the last instruction in the adjusted loop. */
static rtx static rtx_insn *
mep_insert_repeat_label_last (rtx last_insn, rtx label, bool including, mep_insert_repeat_label_last (rtx_insn *last_insn, rtx_code_label *label,
bool shared) bool including, bool shared)
{ {
rtx next, prev; rtx_insn *next, *prev;
int count = 0, code, icode; int count = 0, code, icode;
if (dump_file) if (dump_file)
...@@ -5040,7 +5043,7 @@ mep_insert_repeat_label_last (rtx last_insn, rtx label, bool including, ...@@ -5040,7 +5043,7 @@ mep_insert_repeat_label_last (rtx last_insn, rtx label, bool including,
if (INSN_P (prev)) if (INSN_P (prev))
{ {
if (GET_CODE (PATTERN (prev)) == SEQUENCE) if (GET_CODE (PATTERN (prev)) == SEQUENCE)
prev = XVECEXP (PATTERN (prev), 0, 1); prev = as_a <rtx_insn *> (XVECEXP (PATTERN (prev), 0, 1));
/* Other insns that should not be in the last two opcodes. */ /* Other insns that should not be in the last two opcodes. */
icode = recog_memoized (prev); icode = recog_memoized (prev);
...@@ -5210,7 +5213,7 @@ struct mep_doloop_begin { ...@@ -5210,7 +5213,7 @@ struct mep_doloop_begin {
struct mep_doloop_begin *next; struct mep_doloop_begin *next;
/* The instruction itself. */ /* The instruction itself. */
rtx insn; rtx_insn *insn;
/* The initial counter value. This is known to be a general register. */ /* The initial counter value. This is known to be a general register. */
rtx counter; rtx counter;
...@@ -5222,10 +5225,10 @@ struct mep_doloop_end { ...@@ -5222,10 +5225,10 @@ struct mep_doloop_end {
struct mep_doloop_end *next; struct mep_doloop_end *next;
/* The instruction itself. */ /* The instruction itself. */
rtx insn; rtx_insn *insn;
/* The first instruction after INSN when the branch isn't taken. */ /* The first instruction after INSN when the branch isn't taken. */
rtx fallthrough; rtx_insn *fallthrough;
/* The location of the counter value. Since doloop_end_internal is a /* The location of the counter value. Since doloop_end_internal is a
jump instruction, it has to allow the counter to be stored anywhere jump instruction, it has to allow the counter to be stored anywhere
...@@ -5288,9 +5291,9 @@ mep_repeat_loop_p (struct mep_doloop *loop) ...@@ -5288,9 +5291,9 @@ mep_repeat_loop_p (struct mep_doloop *loop)
/* The main repeat reorg function. See comment above for details. */ /* The main repeat reorg function. See comment above for details. */
static void static void
mep_reorg_repeat (rtx insns) mep_reorg_repeat (rtx_insn *insns)
{ {
rtx insn; rtx_insn *insn;
struct mep_doloop *loops, *loop; struct mep_doloop *loops, *loop;
struct mep_doloop_begin *begin; struct mep_doloop_begin *begin;
struct mep_doloop_end *end; struct mep_doloop_end *end;
...@@ -5351,7 +5354,8 @@ mep_reorg_repeat (rtx insns) ...@@ -5351,7 +5354,8 @@ mep_reorg_repeat (rtx insns)
if (mep_repeat_loop_p (loop)) if (mep_repeat_loop_p (loop))
{ {
/* Case (1) or (2). */ /* Case (1) or (2). */
rtx repeat_label, label_ref; rtx_code_label *repeat_label;
rtx label_ref;
/* Create a new label for the repeat insn. */ /* Create a new label for the repeat insn. */
repeat_label = gen_label_rtx (); repeat_label = gen_label_rtx ();
...@@ -5435,7 +5439,7 @@ mep_reorg_repeat (rtx insns) ...@@ -5435,7 +5439,7 @@ mep_reorg_repeat (rtx insns)
static bool static bool
mep_invertable_branch_p (rtx insn) mep_invertable_branch_p (rtx_insn *insn)
{ {
rtx cond, set; rtx cond, set;
enum rtx_code old_code; enum rtx_code old_code;
...@@ -5473,7 +5477,7 @@ mep_invertable_branch_p (rtx insn) ...@@ -5473,7 +5477,7 @@ mep_invertable_branch_p (rtx insn)
} }
static void static void
mep_invert_branch (rtx insn, rtx after) mep_invert_branch (rtx_insn *insn, rtx_insn *after)
{ {
rtx cond, set, label; rtx cond, set, label;
int i; int i;
...@@ -5519,9 +5523,11 @@ mep_invert_branch (rtx insn, rtx after) ...@@ -5519,9 +5523,11 @@ mep_invert_branch (rtx insn, rtx after)
} }
static void static void
mep_reorg_erepeat (rtx insns) mep_reorg_erepeat (rtx_insn *insns)
{ {
rtx insn, prev, l, x; rtx_insn *insn, *prev;
rtx_code_label *l;
rtx x;
int count; int count;
for (insn = insns; insn; insn = NEXT_INSN (insn)) for (insn = insns; insn; insn = NEXT_INSN (insn))
...@@ -5542,7 +5548,7 @@ mep_reorg_erepeat (rtx insns) ...@@ -5542,7 +5548,7 @@ mep_reorg_erepeat (rtx insns)
if (prev == JUMP_LABEL (insn)) if (prev == JUMP_LABEL (insn))
{ {
rtx newlast; rtx_insn *newlast;
if (dump_file) if (dump_file)
fprintf (dump_file, "found loop top, %d insns\n", count); fprintf (dump_file, "found loop top, %d insns\n", count);
...@@ -5554,7 +5560,7 @@ mep_reorg_erepeat (rtx insns) ...@@ -5554,7 +5560,7 @@ mep_reorg_erepeat (rtx insns)
so, we know nobody inside the loop uses it. so, we know nobody inside the loop uses it.
But we must be careful to put the erepeat But we must be careful to put the erepeat
*after* the label. */ *after* the label. */
rtx barrier; rtx_insn *barrier;
for (barrier = PREV_INSN (prev); for (barrier = PREV_INSN (prev);
barrier && NOTE_P (barrier); barrier && NOTE_P (barrier);
barrier = PREV_INSN (barrier)) barrier = PREV_INSN (barrier))
...@@ -5598,7 +5604,7 @@ mep_reorg_erepeat (rtx insns) ...@@ -5598,7 +5604,7 @@ mep_reorg_erepeat (rtx insns)
{ {
/* A label is OK if there is exactly one user, and we /* A label is OK if there is exactly one user, and we
can find that user before the next label. */ can find that user before the next label. */
rtx user = 0; rtx_insn *user = 0;
int safe = 0; int safe = 0;
if (LABEL_NUSES (prev) == 1) if (LABEL_NUSES (prev) == 1)
{ {
...@@ -5632,9 +5638,10 @@ mep_reorg_erepeat (rtx insns) ...@@ -5632,9 +5638,10 @@ mep_reorg_erepeat (rtx insns)
always do this on its own. */ always do this on its own. */
static void static void
mep_jmp_return_reorg (rtx insns) mep_jmp_return_reorg (rtx_insn *insns)
{ {
rtx insn, label, ret; rtx_insn *insn;
rtx label, ret;
int ret_code; int ret_code;
for (insn = insns; insn; insn = NEXT_INSN (insn)) for (insn = insns; insn; insn = NEXT_INSN (insn))
...@@ -5668,9 +5675,9 @@ mep_jmp_return_reorg (rtx insns) ...@@ -5668,9 +5675,9 @@ mep_jmp_return_reorg (rtx insns)
static void static void
mep_reorg_addcombine (rtx insns) mep_reorg_addcombine (rtx_insn *insns)
{ {
rtx i, n; rtx_insn *i, *n;
for (i = insns; i; i = NEXT_INSN (i)) for (i = insns; i; i = NEXT_INSN (i))
if (INSN_P (i) if (INSN_P (i)
...@@ -5706,7 +5713,7 @@ mep_reorg_addcombine (rtx insns) ...@@ -5706,7 +5713,7 @@ mep_reorg_addcombine (rtx insns)
/* If this insn adjusts the stack, return the adjustment, else return /* If this insn adjusts the stack, return the adjustment, else return
zero. */ zero. */
static int static int
add_sp_insn_p (rtx insn) add_sp_insn_p (rtx_insn *insn)
{ {
rtx pat; rtx pat;
...@@ -5731,10 +5738,10 @@ add_sp_insn_p (rtx insn) ...@@ -5731,10 +5738,10 @@ add_sp_insn_p (rtx insn)
/* Check for trivial functions that set up an unneeded stack /* Check for trivial functions that set up an unneeded stack
frame. */ frame. */
static void static void
mep_reorg_noframe (rtx insns) mep_reorg_noframe (rtx_insn *insns)
{ {
rtx start_frame_insn; rtx_insn *start_frame_insn;
rtx end_frame_insn = 0; rtx_insn *end_frame_insn = 0;
int sp_adjust, sp2; int sp_adjust, sp2;
rtx sp; rtx sp;
...@@ -5755,7 +5762,7 @@ mep_reorg_noframe (rtx insns) ...@@ -5755,7 +5762,7 @@ mep_reorg_noframe (rtx insns)
while (insns) while (insns)
{ {
rtx next = next_real_insn (insns); rtx_insn *next = next_real_insn (insns);
if (!next) if (!next)
break; break;
...@@ -5786,7 +5793,7 @@ mep_reorg_noframe (rtx insns) ...@@ -5786,7 +5793,7 @@ mep_reorg_noframe (rtx insns)
static void static void
mep_reorg (void) mep_reorg (void)
{ {
rtx insns = get_insns (); rtx_insn *insns = get_insns ();
/* We require accurate REG_DEAD notes. */ /* We require accurate REG_DEAD notes. */
compute_bb_for_insn (); compute_bb_for_insn ();
...@@ -6673,7 +6680,7 @@ mep_store_find_set (rtx *x, void *prev) ...@@ -6673,7 +6680,7 @@ mep_store_find_set (rtx *x, void *prev)
not the containing insn. */ not the containing insn. */
static bool static bool
mep_store_data_bypass_1 (rtx prev, rtx pat) mep_store_data_bypass_1 (rtx_insn *prev, rtx pat)
{ {
/* Cope with intrinsics like swcpa. */ /* Cope with intrinsics like swcpa. */
if (GET_CODE (pat) == PARALLEL) if (GET_CODE (pat) == PARALLEL)
...@@ -6681,7 +6688,8 @@ mep_store_data_bypass_1 (rtx prev, rtx pat) ...@@ -6681,7 +6688,8 @@ mep_store_data_bypass_1 (rtx prev, rtx pat)
int i; int i;
for (i = 0; i < XVECLEN (pat, 0); i++) for (i = 0; i < XVECLEN (pat, 0); i++)
if (mep_store_data_bypass_p (prev, XVECEXP (pat, 0, i))) if (mep_store_data_bypass_p (prev,
as_a <rtx_insn *> (XVECEXP (pat, 0, i))))
return true; return true;
return false; return false;
...@@ -6717,7 +6725,7 @@ mep_store_data_bypass_1 (rtx prev, rtx pat) ...@@ -6717,7 +6725,7 @@ mep_store_data_bypass_1 (rtx prev, rtx pat)
has no true dependence on PREV. */ has no true dependence on PREV. */
bool bool
mep_store_data_bypass_p (rtx prev, rtx insn) mep_store_data_bypass_p (rtx_insn *prev, rtx_insn *insn)
{ {
return INSN_P (insn) ? mep_store_data_bypass_1 (prev, PATTERN (insn)) : false; return INSN_P (insn) ? mep_store_data_bypass_1 (prev, PATTERN (insn)) : false;
} }
...@@ -6738,7 +6746,7 @@ mep_mul_hilo_bypass_1 (rtx *x, void *prev) ...@@ -6738,7 +6746,7 @@ mep_mul_hilo_bypass_1 (rtx *x, void *prev)
between multiplication instructions PREV and INSN. */ between multiplication instructions PREV and INSN. */
bool bool
mep_mul_hilo_bypass_p (rtx prev, rtx insn) mep_mul_hilo_bypass_p (rtx_insn *prev, rtx_insn *insn)
{ {
rtx pat; rtx pat;
...@@ -6754,7 +6762,7 @@ mep_mul_hilo_bypass_p (rtx prev, rtx insn) ...@@ -6754,7 +6762,7 @@ mep_mul_hilo_bypass_p (rtx prev, rtx insn)
read from PSW, LP, SAR, HI and LO. */ read from PSW, LP, SAR, HI and LO. */
bool bool
mep_ipipe_ldc_p (rtx insn) mep_ipipe_ldc_p (rtx_insn *insn)
{ {
rtx pat, src; rtx pat, src;
...@@ -6794,10 +6802,11 @@ mep_ipipe_ldc_p (rtx insn) ...@@ -6794,10 +6802,11 @@ mep_ipipe_ldc_p (rtx insn)
Emit the bundle in place of COP and return it. */ Emit the bundle in place of COP and return it. */
static rtx static rtx_insn *
mep_make_bundle (rtx core, rtx cop) mep_make_bundle (rtx core, rtx_insn *cop)
{ {
rtx insn; rtx seq;
rtx_insn *insn;
/* If CORE is an existing instruction, remove it, otherwise put /* If CORE is an existing instruction, remove it, otherwise put
the new pattern in an INSN harness. */ the new pattern in an INSN harness. */
...@@ -6807,8 +6816,8 @@ mep_make_bundle (rtx core, rtx cop) ...@@ -6807,8 +6816,8 @@ mep_make_bundle (rtx core, rtx cop)
core = make_insn_raw (core); core = make_insn_raw (core);
/* Generate the bundle sequence and replace COP with it. */ /* Generate the bundle sequence and replace COP with it. */
insn = gen_rtx_SEQUENCE (VOIDmode, gen_rtvec (2, core, cop)); seq = gen_rtx_SEQUENCE (VOIDmode, gen_rtvec (2, core, cop));
insn = emit_insn_after (insn, cop); insn = emit_insn_after (seq, cop);
remove_insn (cop); remove_insn (cop);
/* Set up the links of the insns inside the SEQUENCE. */ /* Set up the links of the insns inside the SEQUENCE. */
...@@ -6867,7 +6876,7 @@ mep_insn_dependent_p (rtx x, rtx y) ...@@ -6867,7 +6876,7 @@ mep_insn_dependent_p (rtx x, rtx y)
} }
static int static int
core_insn_p (rtx insn) core_insn_p (rtx_insn *insn)
{ {
if (GET_CODE (PATTERN (insn)) == USE) if (GET_CODE (PATTERN (insn)) == USE)
return 0; return 0;
...@@ -6888,9 +6897,9 @@ core_insn_p (rtx insn) ...@@ -6888,9 +6897,9 @@ core_insn_p (rtx insn)
Called from mep_insn_reorg. */ Called from mep_insn_reorg. */
static void static void
mep_bundle_insns (rtx insns) mep_bundle_insns (rtx_insn *insns)
{ {
rtx insn, last = NULL_RTX, first = NULL_RTX; rtx_insn *insn, *last = NULL, *first = NULL;
int saw_scheduling = 0; int saw_scheduling = 0;
/* Only do bundling if we're in vliw mode. */ /* Only do bundling if we're in vliw mode. */
...@@ -6915,7 +6924,7 @@ mep_bundle_insns (rtx insns) ...@@ -6915,7 +6924,7 @@ mep_bundle_insns (rtx insns)
else if (NONJUMP_INSN_P (insn) && GET_MODE (insn) == VOIDmode && first) else if (NONJUMP_INSN_P (insn) && GET_MODE (insn) == VOIDmode && first)
{ {
rtx note, prev; rtx_insn *note, *prev;
/* INSN is part of a bundle; FIRST is the first insn in that /* INSN is part of a bundle; FIRST is the first insn in that
bundle. Move all intervening notes out of the bundle. bundle. Move all intervening notes out of the bundle.
...@@ -6971,7 +6980,7 @@ mep_bundle_insns (rtx insns) ...@@ -6971,7 +6980,7 @@ mep_bundle_insns (rtx insns)
if (TARGET_IVC2) if (TARGET_IVC2)
{ {
rtx core_insn = NULL_RTX; rtx_insn *core_insn = NULL;
/* IVC2 slots are scheduled by DFA, so we just accept /* IVC2 slots are scheduled by DFA, so we just accept
whatever the scheduler gives us. However, we must make whatever the scheduler gives us. However, we must make
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment