Commit 4dea3bff by David Malcolm Committed by David Malcolm

emit-rtl.c: more typesafety

This patch converts various rtx to rtx_insn * (or rtx_code_label *).
It also convert the various "_loc" params from int to location_t

gcc/ChangeLog:
	* config/arc/arc.c (hwloop_optimize): Strengthen local "end_label"
	from rtx to rtx_insn *.
	* config/bfin/bfin.c (hwloop_optimize): Likewise for local
	"label".
	(add_sched_insns_for_speculation): Likewise for local "target",
	converting usage of JUMP_LABEL to JUMP_LABEL_AS_INSN.
	* config/c6x/c6x.c (reorg_split_calls): Strengthen param "call_labels"
	from rtx_insn ** to rtx_code_label **.
	(reorg_emit_nops): Likewise.
	(c6x_reorg): Likewise for local "call_labels".
	* config/sh/sh-protos.h (get_dest_uid): Strengthen 1st param from
	rtx to rtx_insn *.
	* config/sh/sh.c (dump_table): Strengthen local "lab" from rtx to
	rtx_code_label *, adding safe_as_a <rtx_code_label *> casts to
	the loops over LABEL_REFS.
	(fixup_addr_diff_vecs): Add as_a <rtx_insn *> to usage of
	braf_label.
	(barrier_align): Convert usage of JUMP_LABEL to JUMP_LABEL_AS_INSN.
	(get_dest_uid): Strengthen param "label" from rtx to rtx_insn *.
	(split_branches): Strengthen local "olabel" from rtx to
	rtx_insn *, adding a safe_as_a cast.
	* emit-rtl.c (next_real_insn): Strengthen param from "rtx"
	to "rtx_insn *".
	(add_insn_after): Likewise for first two params.
	(add_insn_before): Likewise.
	(remove_insn): Likewise for param.
	(emit_pattern_before_noloc): Likewise for second and third params.
	(emit_jump_insn_before_noloc): Convert NULL_RTX to NULL.
	(emit_call_insn_before_noloc): Likewise.
	(emit_debug_insn_before_noloc): Strengthen "before" param from "rtx"
	to "rtx_insn *".
	(emit_barrier_before): Likewise.
	(emit_label_before): Strengthen "label" param from "rtx" to
	"rtx_code_label *".  Strengthen "before" param from "rtx" to
	"rtx_insn *".
	(emit_insn_after_1): Strengthen "after" param from "rtx" to
	"rtx_insn *".
	(emit_pattern_after_noloc): Likewise.
	(emit_insn_after_noloc): Likewise.
	(emit_jump_insn_after_noloc): Likewise.
	(emit_call_insn_after_noloc): Likewise.
	(emit_debug_insn_after_noloc): Likewise.
	(emit_barrier_after): Likewise.
	(emit_label_after): Likewise for both params.
	(emit_pattern_after_setloc): Likewise for "after" param.  Convert
	"loc" param from "int" to "location_t".
	(emit_insn_after_setloc): Likewise.
	(emit_jump_insn_after_setloc): Likewise.
	(emit_call_insn_after_setloc): Likewise.
	(emit_debug_insn_after_setloc): Likewise.
	(emit_pattern_before_setloc): Likewise for "before" param.  Convert
	"loc" param from "int" to "location_t".
	(emit_pattern_before): Convert NULL_RTX to NULL.
	(emit_insn_before_setloc): Convert "loc" param from "int" to
	"location_t".
	(emit_jump_insn_before_setloc): Likewise.
	(emit_call_insn_before_setloc): Likewise.
	(emit_debug_insn_before_setloc): Strengthen "before" param from rtx to
	rtx_insn *.  Convert "loc" param from "int" to "location_t".
	* rtl.h (emit_insn_before_setloc, emit_jump_insn_before_setloc,
	emit_call_insn_before_setloc, emit_debug_insn_before_setloc):
	Convert 3rd param from "int" to "location_t".
	(emit_barrier_before, emit_barrier_after, next_real_insn):
	Strengthen param from rtx to rtx_insn *.
	(emit_label_before): Strengthen 1st param from "rtx" to
	"rtx_code_label *".  Strengthen 2nd param from "rtx" to
	"rtx_insn *".
	(emit_insn_after_noloc, emit_jump_insn_after_noloc,
	emit_call_insn_after_noloc, emit_debug_insn_after_noloc):
	Strengthen 2nd param from "rtx" to "rtx_insn *".
	(emit_insn_after_setloc, emit_jump_insn_after_setloc)
	emit_call_insn_after_setloc, emit_debug_insn_after_setloc):
	Likewise. Convert 3rd param from "int" to "location_t".
	(emit_label_after): Strengthen 1st param from "rtx" to
	"rtx_code_label *".
	(next_real_insn, remove_insn): Strengthen param from "rtx" to
	"rtx_insn *".
	(add_insn_before, add_insn_after): Strengthen 1st and 2nd params
	from "rtx" to "rtx_insn *".

From-SVN: r261547
parent b4da704c
2018-06-13 David Malcolm <dmalcolm@redhat.com>
* config/arc/arc.c (hwloop_optimize): Strengthen local "end_label"
from rtx to rtx_insn *.
* config/bfin/bfin.c (hwloop_optimize): Likewise for local
"label".
(add_sched_insns_for_speculation): Likewise for local "target",
converting usage of JUMP_LABEL to JUMP_LABEL_AS_INSN.
* config/c6x/c6x.c (reorg_split_calls): Strengthen param "call_labels"
from rtx_insn ** to rtx_code_label **.
(reorg_emit_nops): Likewise.
(c6x_reorg): Likewise for local "call_labels".
* config/sh/sh-protos.h (get_dest_uid): Strengthen 1st param from
rtx to rtx_insn *.
* config/sh/sh.c (dump_table): Strengthen local "lab" from rtx to
rtx_code_label *, adding safe_as_a <rtx_code_label *> casts to
the loops over LABEL_REFS.
(fixup_addr_diff_vecs): Add as_a <rtx_insn *> to usage of
braf_label.
(barrier_align): Convert usage of JUMP_LABEL to JUMP_LABEL_AS_INSN.
(get_dest_uid): Strengthen param "label" from rtx to rtx_insn *.
(split_branches): Strengthen local "olabel" from rtx to
rtx_insn *, adding a safe_as_a cast.
* emit-rtl.c (next_real_insn): Strengthen param from "rtx"
to "rtx_insn *".
(add_insn_after): Likewise for first two params.
(add_insn_before): Likewise.
(remove_insn): Likewise for param.
(emit_pattern_before_noloc): Likewise for second and third params.
(emit_jump_insn_before_noloc): Convert NULL_RTX to NULL.
(emit_call_insn_before_noloc): Likewise.
(emit_debug_insn_before_noloc): Strengthen "before" param from "rtx"
to "rtx_insn *".
(emit_barrier_before): Likewise.
(emit_label_before): Strengthen "label" param from "rtx" to
"rtx_code_label *". Strengthen "before" param from "rtx" to
"rtx_insn *".
(emit_insn_after_1): Strengthen "after" param from "rtx" to
"rtx_insn *".
(emit_pattern_after_noloc): Likewise.
(emit_insn_after_noloc): Likewise.
(emit_jump_insn_after_noloc): Likewise.
(emit_call_insn_after_noloc): Likewise.
(emit_debug_insn_after_noloc): Likewise.
(emit_barrier_after): Likewise.
(emit_label_after): Likewise for both params.
(emit_pattern_after_setloc): Likewise for "after" param. Convert
"loc" param from "int" to "location_t".
(emit_insn_after_setloc): Likewise.
(emit_jump_insn_after_setloc): Likewise.
(emit_call_insn_after_setloc): Likewise.
(emit_debug_insn_after_setloc): Likewise.
(emit_pattern_before_setloc): Likewise for "before" param. Convert
"loc" param from "int" to "location_t".
(emit_pattern_before): Convert NULL_RTX to NULL.
(emit_insn_before_setloc): Convert "loc" param from "int" to
"location_t".
(emit_jump_insn_before_setloc): Likewise.
(emit_call_insn_before_setloc): Likewise.
(emit_debug_insn_before_setloc): Strengthen "before" param from rtx to
rtx_insn *. Convert "loc" param from "int" to "location_t".
* rtl.h (emit_insn_before_setloc, emit_jump_insn_before_setloc,
emit_call_insn_before_setloc, emit_debug_insn_before_setloc):
Convert 3rd param from "int" to "location_t".
(emit_barrier_before, emit_barrier_after, next_real_insn):
Strengthen param from rtx to rtx_insn *.
(emit_label_before): Strengthen 1st param from "rtx" to
"rtx_code_label *". Strengthen 2nd param from "rtx" to
"rtx_insn *".
(emit_insn_after_noloc, emit_jump_insn_after_noloc,
emit_call_insn_after_noloc, emit_debug_insn_after_noloc):
Strengthen 2nd param from "rtx" to "rtx_insn *".
(emit_insn_after_setloc, emit_jump_insn_after_setloc)
emit_call_insn_after_setloc, emit_debug_insn_after_setloc):
Likewise. Convert 3rd param from "int" to "location_t".
(emit_label_after): Strengthen 1st param from "rtx" to
"rtx_code_label *".
(next_real_insn, remove_insn): Strengthen param from "rtx" to
"rtx_insn *".
(add_insn_before, add_insn_after): Strengthen 1st and 2nd params
from "rtx" to "rtx_insn *".
2018-06-13 Jan Hubicka <hubicka@gcc.gnu.org> 2018-06-13 Jan Hubicka <hubicka@gcc.gnu.org>
* cgraph.c (cgraph_node::get_untransformed_body): Dump function * cgraph.c (cgraph_node::get_untransformed_body): Dump function
......
...@@ -7306,8 +7306,8 @@ hwloop_optimize (hwloop_info loop) ...@@ -7306,8 +7306,8 @@ hwloop_optimize (hwloop_info loop)
int i; int i;
edge entry_edge; edge entry_edge;
basic_block entry_bb, bb; basic_block entry_bb, bb;
rtx iter_reg, end_label; rtx iter_reg;
rtx_insn *insn, *seq, *entry_after, *last_insn; rtx_insn *insn, *seq, *entry_after, *last_insn, *end_label;
unsigned int length; unsigned int length;
bool need_fix = false; bool need_fix = false;
rtx lp_reg = gen_rtx_REG (SImode, LP_COUNT); rtx lp_reg = gen_rtx_REG (SImode, LP_COUNT);
......
...@@ -3773,7 +3773,7 @@ hwloop_optimize (hwloop_info loop) ...@@ -3773,7 +3773,7 @@ hwloop_optimize (hwloop_info loop)
point. */ point. */
if (!loop->incoming_src && loop->head != loop->incoming_dest) if (!loop->incoming_src && loop->head != loop->incoming_dest)
{ {
rtx label = BB_HEAD (loop->incoming_dest); rtx_insn *label = BB_HEAD (loop->incoming_dest);
/* If we're jumping to the final basic block in the loop, and there's /* If we're jumping to the final basic block in the loop, and there's
only one cheap instruction before the end (typically an increment of only one cheap instruction before the end (typically an increment of
an induction variable), we can just emit a copy here instead of a an induction variable), we can just emit a copy here instead of a
...@@ -4607,7 +4607,7 @@ add_sched_insns_for_speculation (void) ...@@ -4607,7 +4607,7 @@ add_sched_insns_for_speculation (void)
&& any_condjump_p (insn) && any_condjump_p (insn)
&& (cbranch_predicted_taken_p (insn))) && (cbranch_predicted_taken_p (insn)))
{ {
rtx target = JUMP_LABEL (insn); rtx_insn *target = JUMP_LABEL_AS_INSN (insn);
rtx_insn *next = next_real_insn (target); rtx_insn *next = next_real_insn (target);
if (GET_CODE (PATTERN (next)) == UNSPEC_VOLATILE if (GET_CODE (PATTERN (next)) == UNSPEC_VOLATILE
......
...@@ -4835,7 +4835,7 @@ find_last_same_clock (rtx_insn *insn) ...@@ -4835,7 +4835,7 @@ find_last_same_clock (rtx_insn *insn)
the SEQUENCEs that represent execute packets. */ the SEQUENCEs that represent execute packets. */
static void static void
reorg_split_calls (rtx_insn **call_labels) reorg_split_calls (rtx_code_label **call_labels)
{ {
unsigned int reservation_mask = 0; unsigned int reservation_mask = 0;
rtx_insn *insn = get_insns (); rtx_insn *insn = get_insns ();
...@@ -5009,7 +5009,7 @@ reorg_split_calls (rtx_insn **call_labels) ...@@ -5009,7 +5009,7 @@ reorg_split_calls (rtx_insn **call_labels)
scheduling was run earlier. */ scheduling was run earlier. */
static void static void
reorg_emit_nops (rtx_insn **call_labels) reorg_emit_nops (rtx_code_label **call_labels)
{ {
bool first; bool first;
rtx last_call; rtx last_call;
...@@ -5947,7 +5947,7 @@ c6x_reorg (void) ...@@ -5947,7 +5947,7 @@ c6x_reorg (void)
} }
sched_no_dce = false; sched_no_dce = false;
rtx_insn **call_labels = XCNEWVEC (rtx_insn *, get_max_uid () + 1); rtx_code_label **call_labels = XCNEWVEC (rtx_code_label *, get_max_uid () + 1);
reorg_split_calls (call_labels); reorg_split_calls (call_labels);
......
...@@ -88,7 +88,7 @@ extern int shl_sext_length (rtx); ...@@ -88,7 +88,7 @@ extern int shl_sext_length (rtx);
extern bool gen_shl_sext (rtx, rtx, rtx, rtx); extern bool gen_shl_sext (rtx, rtx, rtx, rtx);
extern int regs_used (rtx, int); extern int regs_used (rtx, int);
extern void fixup_addr_diff_vecs (rtx_insn *); extern void fixup_addr_diff_vecs (rtx_insn *);
extern int get_dest_uid (rtx, int); extern int get_dest_uid (rtx_insn *, int);
extern void final_prescan_insn (rtx_insn *, rtx *, int); extern void final_prescan_insn (rtx_insn *, rtx *, int);
extern enum tls_model tls_symbolic_operand (rtx, machine_mode); extern enum tls_model tls_symbolic_operand (rtx, machine_mode);
extern bool system_reg_operand (rtx, machine_mode); extern bool system_reg_operand (rtx, machine_mode);
......
...@@ -4583,7 +4583,7 @@ dump_table (rtx_insn *start, rtx_insn *barrier) ...@@ -4583,7 +4583,7 @@ dump_table (rtx_insn *start, rtx_insn *barrier)
{ {
rtx_insn *scan = barrier; rtx_insn *scan = barrier;
bool need_align = true; bool need_align = true;
rtx lab; rtx_code_label *lab;
label_ref_list_t ref; label_ref_list_t ref;
bool have_df = false; bool have_df = false;
...@@ -4600,7 +4600,8 @@ dump_table (rtx_insn *start, rtx_insn *barrier) ...@@ -4600,7 +4600,8 @@ dump_table (rtx_insn *start, rtx_insn *barrier)
scan = emit_insn_after (gen_align_2 (), scan); scan = emit_insn_after (gen_align_2 (), scan);
need_align = false; need_align = false;
} }
for (lab = p->label; lab; lab = LABEL_REFS (lab)) for (lab = p->label; lab;
lab = safe_as_a <rtx_code_label *> (LABEL_REFS (lab)))
scan = emit_label_after (lab, scan); scan = emit_label_after (lab, scan);
scan = emit_insn_after (gen_consttable_2 (p->value, const0_rtx), scan = emit_insn_after (gen_consttable_2 (p->value, const0_rtx),
scan); scan);
...@@ -4627,7 +4628,7 @@ dump_table (rtx_insn *start, rtx_insn *barrier) ...@@ -4627,7 +4628,7 @@ dump_table (rtx_insn *start, rtx_insn *barrier)
rtx src = SET_SRC (XVECEXP (PATTERN (start), 0, 0)); rtx src = SET_SRC (XVECEXP (PATTERN (start), 0, 0));
rtx lab = XEXP (XVECEXP (src, 0, 3), 0); rtx lab = XEXP (XVECEXP (src, 0, 3), 0);
scan = emit_label_after (lab, scan); scan = emit_label_after (as_a <rtx_insn *> (lab), scan);
} }
} }
if (TARGET_FMOVD && TARGET_ALIGN_DOUBLE && have_df) if (TARGET_FMOVD && TARGET_ALIGN_DOUBLE && have_df)
...@@ -4650,7 +4651,8 @@ dump_table (rtx_insn *start, rtx_insn *barrier) ...@@ -4650,7 +4651,8 @@ dump_table (rtx_insn *start, rtx_insn *barrier)
case E_SFmode: case E_SFmode:
if (align_insn && !p->part_of_sequence_p) if (align_insn && !p->part_of_sequence_p)
{ {
for (lab = p->label; lab; lab = LABEL_REFS (lab)) for (lab = p->label; lab;
lab = safe_as_a <rtx_code_label *> (LABEL_REFS (lab)))
emit_label_before (lab, align_insn); emit_label_before (lab, align_insn);
emit_insn_before (gen_consttable_4 (p->value, const0_rtx), emit_insn_before (gen_consttable_4 (p->value, const0_rtx),
align_insn); align_insn);
...@@ -4666,7 +4668,8 @@ dump_table (rtx_insn *start, rtx_insn *barrier) ...@@ -4666,7 +4668,8 @@ dump_table (rtx_insn *start, rtx_insn *barrier)
} }
else else
{ {
for (lab = p->label; lab; lab = LABEL_REFS (lab)) for (lab = p->label; lab;
lab = safe_as_a <rtx_code_label *> (LABEL_REFS (lab)))
scan = emit_label_after (lab, scan); scan = emit_label_after (lab, scan);
scan = emit_insn_after (gen_consttable_4 (p->value, scan = emit_insn_after (gen_consttable_4 (p->value,
const0_rtx), scan); const0_rtx), scan);
...@@ -4682,7 +4685,8 @@ dump_table (rtx_insn *start, rtx_insn *barrier) ...@@ -4682,7 +4685,8 @@ dump_table (rtx_insn *start, rtx_insn *barrier)
} }
/* FALLTHRU */ /* FALLTHRU */
case E_DImode: case E_DImode:
for (lab = p->label; lab; lab = LABEL_REFS (lab)) for (lab = p->label; lab;
lab = safe_as_a <rtx_code_label *> (LABEL_REFS (lab)))
scan = emit_label_after (lab, scan); scan = emit_label_after (lab, scan);
scan = emit_insn_after (gen_consttable_8 (p->value, const0_rtx), scan = emit_insn_after (gen_consttable_8 (p->value, const0_rtx),
scan); scan);
...@@ -4721,7 +4725,8 @@ dump_table (rtx_insn *start, rtx_insn *barrier) ...@@ -4721,7 +4725,8 @@ dump_table (rtx_insn *start, rtx_insn *barrier)
scan = emit_label_after (gen_label_rtx (), scan); scan = emit_label_after (gen_label_rtx (), scan);
scan = emit_insn_after (gen_align_4 (), scan); scan = emit_insn_after (gen_align_4 (), scan);
} }
for (lab = p->label; lab; lab = LABEL_REFS (lab)) for (lab = p->label; lab;
lab = safe_as_a <rtx_code_label *> (LABEL_REFS (lab)))
scan = emit_label_after (lab, scan); scan = emit_label_after (lab, scan);
scan = emit_insn_after (gen_consttable_4 (p->value, const0_rtx), scan = emit_insn_after (gen_consttable_4 (p->value, const0_rtx),
scan); scan);
...@@ -4734,7 +4739,8 @@ dump_table (rtx_insn *start, rtx_insn *barrier) ...@@ -4734,7 +4739,8 @@ dump_table (rtx_insn *start, rtx_insn *barrier)
scan = emit_label_after (gen_label_rtx (), scan); scan = emit_label_after (gen_label_rtx (), scan);
scan = emit_insn_after (gen_align_4 (), scan); scan = emit_insn_after (gen_align_4 (), scan);
} }
for (lab = p->label; lab; lab = LABEL_REFS (lab)) for (lab = p->label; lab;
lab = safe_as_a <rtx_code_label *> (LABEL_REFS (lab)))
scan = emit_label_after (lab, scan); scan = emit_label_after (lab, scan);
scan = emit_insn_after (gen_consttable_8 (p->value, const0_rtx), scan = emit_insn_after (gen_consttable_8 (p->value, const0_rtx),
scan); scan);
...@@ -5706,7 +5712,7 @@ fixup_addr_diff_vecs (rtx_insn *first) ...@@ -5706,7 +5712,7 @@ fixup_addr_diff_vecs (rtx_insn *first)
/* Emit the reference label of the braf where it belongs, right after /* Emit the reference label of the braf where it belongs, right after
the casesi_jump_2 (i.e. braf). */ the casesi_jump_2 (i.e. braf). */
braf_label = XEXP (XEXP (SET_SRC (XVECEXP (prevpat, 0, 0)), 1), 0); braf_label = XEXP (XEXP (SET_SRC (XVECEXP (prevpat, 0, 0)), 1), 0);
emit_label_after (braf_label, prev); emit_label_after (as_a <rtx_insn *> (braf_label), prev);
/* Fix up the ADDR_DIF_VEC to be relative /* Fix up the ADDR_DIF_VEC to be relative
to the reference address of the braf. */ to the reference address of the braf. */
...@@ -5810,7 +5816,7 @@ barrier_align (rtx_insn *barrier_or_label) ...@@ -5810,7 +5816,7 @@ barrier_align (rtx_insn *barrier_or_label)
{ {
rtx_insn *x; rtx_insn *x;
if (jump_to_next if (jump_to_next
|| next_real_insn (JUMP_LABEL (prev)) == next || next_real_insn (JUMP_LABEL_AS_INSN (prev)) == next
/* If relax_delay_slots() decides NEXT was redundant /* If relax_delay_slots() decides NEXT was redundant
with some previous instruction, it will have with some previous instruction, it will have
redirected PREV's jump to the following insn. */ redirected PREV's jump to the following insn. */
...@@ -6310,7 +6316,7 @@ sh_reorg (void) ...@@ -6310,7 +6316,7 @@ sh_reorg (void)
/* Return the UID of the insn that follows the specified label. */ /* Return the UID of the insn that follows the specified label. */
int int
get_dest_uid (rtx label, int max_uid) get_dest_uid (rtx_insn *label, int max_uid)
{ {
rtx_insn *dest = next_real_insn (label); rtx_insn *dest = next_real_insn (label);
...@@ -6370,7 +6376,7 @@ split_branches (rtx_insn *first) ...@@ -6370,7 +6376,7 @@ split_branches (rtx_insn *first)
if (get_attr_length (insn) > 4) if (get_attr_length (insn) > 4)
{ {
rtx src = SET_SRC (PATTERN (insn)); rtx src = SET_SRC (PATTERN (insn));
rtx olabel = XEXP (XEXP (src, 1), 0); rtx_insn *olabel = safe_as_a <rtx_insn *> (XEXP (XEXP (src, 1), 0));
int addr = INSN_ADDRESSES (INSN_UID (insn)); int addr = INSN_ADDRESSES (INSN_UID (insn));
rtx_insn *label = 0; rtx_insn *label = 0;
int dest_uid = get_dest_uid (olabel, max_uid); int dest_uid = get_dest_uid (olabel, max_uid);
......
...@@ -3602,10 +3602,8 @@ prev_nonnote_nondebug_insn_bb (rtx_insn *insn) ...@@ -3602,10 +3602,8 @@ prev_nonnote_nondebug_insn_bb (rtx_insn *insn)
SEQUENCEs. */ SEQUENCEs. */
rtx_insn * rtx_insn *
next_real_insn (rtx uncast_insn) next_real_insn (rtx_insn *insn)
{ {
rtx_insn *insn = safe_as_a <rtx_insn *> (uncast_insn);
while (insn) while (insn)
{ {
insn = NEXT_INSN (insn); insn = NEXT_INSN (insn);
...@@ -4230,10 +4228,8 @@ add_insn_before_nobb (rtx_insn *insn, rtx_insn *before) ...@@ -4230,10 +4228,8 @@ add_insn_before_nobb (rtx_insn *insn, rtx_insn *before)
they know how to update a SEQUENCE. */ they know how to update a SEQUENCE. */
void void
add_insn_after (rtx uncast_insn, rtx uncast_after, basic_block bb) add_insn_after (rtx_insn *insn, rtx_insn *after, basic_block bb)
{ {
rtx_insn *insn = as_a <rtx_insn *> (uncast_insn);
rtx_insn *after = as_a <rtx_insn *> (uncast_after);
add_insn_after_nobb (insn, after); add_insn_after_nobb (insn, after);
if (!BARRIER_P (after) if (!BARRIER_P (after)
&& !BARRIER_P (insn) && !BARRIER_P (insn)
...@@ -4260,10 +4256,8 @@ add_insn_after (rtx uncast_insn, rtx uncast_after, basic_block bb) ...@@ -4260,10 +4256,8 @@ add_insn_after (rtx uncast_insn, rtx uncast_after, basic_block bb)
they know how to update a SEQUENCE. */ they know how to update a SEQUENCE. */
void void
add_insn_before (rtx uncast_insn, rtx uncast_before, basic_block bb) add_insn_before (rtx_insn *insn, rtx_insn *before, basic_block bb)
{ {
rtx_insn *insn = as_a <rtx_insn *> (uncast_insn);
rtx_insn *before = as_a <rtx_insn *> (uncast_before);
add_insn_before_nobb (insn, before); add_insn_before_nobb (insn, before);
if (!bb if (!bb
...@@ -4313,9 +4307,8 @@ set_insn_deleted (rtx insn) ...@@ -4313,9 +4307,8 @@ set_insn_deleted (rtx insn)
To really delete an insn and related DF information, use delete_insn. */ To really delete an insn and related DF information, use delete_insn. */
void void
remove_insn (rtx uncast_insn) remove_insn (rtx_insn *insn)
{ {
rtx_insn *insn = as_a <rtx_insn *> (uncast_insn);
rtx_insn *next = NEXT_INSN (insn); rtx_insn *next = NEXT_INSN (insn);
rtx_insn *prev = PREV_INSN (insn); rtx_insn *prev = PREV_INSN (insn);
basic_block bb; basic_block bb;
...@@ -4518,7 +4511,8 @@ reorder_insns (rtx_insn *from, rtx_insn *to, rtx_insn *after) ...@@ -4518,7 +4511,8 @@ reorder_insns (rtx_insn *from, rtx_insn *to, rtx_insn *after)
generated would almost certainly die right after it was created. */ generated would almost certainly die right after it was created. */
static rtx_insn * static rtx_insn *
emit_pattern_before_noloc (rtx x, rtx before, rtx last, basic_block bb, emit_pattern_before_noloc (rtx x, rtx_insn *before, rtx_insn *last,
basic_block bb,
rtx_insn *(*make_raw) (rtx)) rtx_insn *(*make_raw) (rtx))
{ {
rtx_insn *insn; rtx_insn *insn;
...@@ -4526,7 +4520,7 @@ emit_pattern_before_noloc (rtx x, rtx before, rtx last, basic_block bb, ...@@ -4526,7 +4520,7 @@ emit_pattern_before_noloc (rtx x, rtx before, rtx last, basic_block bb,
gcc_assert (before); gcc_assert (before);
if (x == NULL_RTX) if (x == NULL_RTX)
return safe_as_a <rtx_insn *> (last); return last;
switch (GET_CODE (x)) switch (GET_CODE (x))
{ {
...@@ -4559,7 +4553,7 @@ emit_pattern_before_noloc (rtx x, rtx before, rtx last, basic_block bb, ...@@ -4559,7 +4553,7 @@ emit_pattern_before_noloc (rtx x, rtx before, rtx last, basic_block bb,
break; break;
} }
return safe_as_a <rtx_insn *> (last); return last;
} }
/* Make X be output before the instruction BEFORE. */ /* Make X be output before the instruction BEFORE. */
...@@ -4577,7 +4571,7 @@ rtx_jump_insn * ...@@ -4577,7 +4571,7 @@ rtx_jump_insn *
emit_jump_insn_before_noloc (rtx x, rtx_insn *before) emit_jump_insn_before_noloc (rtx x, rtx_insn *before)
{ {
return as_a <rtx_jump_insn *> ( return as_a <rtx_jump_insn *> (
emit_pattern_before_noloc (x, before, NULL_RTX, NULL, emit_pattern_before_noloc (x, before, NULL, NULL,
make_jump_insn_raw)); make_jump_insn_raw));
} }
...@@ -4587,7 +4581,7 @@ emit_jump_insn_before_noloc (rtx x, rtx_insn *before) ...@@ -4587,7 +4581,7 @@ emit_jump_insn_before_noloc (rtx x, rtx_insn *before)
rtx_insn * rtx_insn *
emit_call_insn_before_noloc (rtx x, rtx_insn *before) emit_call_insn_before_noloc (rtx x, rtx_insn *before)
{ {
return emit_pattern_before_noloc (x, before, NULL_RTX, NULL, return emit_pattern_before_noloc (x, before, NULL, NULL,
make_call_insn_raw); make_call_insn_raw);
} }
...@@ -4595,9 +4589,9 @@ emit_call_insn_before_noloc (rtx x, rtx_insn *before) ...@@ -4595,9 +4589,9 @@ emit_call_insn_before_noloc (rtx x, rtx_insn *before)
and output it before the instruction BEFORE. */ and output it before the instruction BEFORE. */
rtx_insn * rtx_insn *
emit_debug_insn_before_noloc (rtx x, rtx before) emit_debug_insn_before_noloc (rtx x, rtx_insn *before)
{ {
return emit_pattern_before_noloc (x, before, NULL_RTX, NULL, return emit_pattern_before_noloc (x, before, NULL, NULL,
make_debug_insn_raw); make_debug_insn_raw);
} }
...@@ -4605,7 +4599,7 @@ emit_debug_insn_before_noloc (rtx x, rtx before) ...@@ -4605,7 +4599,7 @@ emit_debug_insn_before_noloc (rtx x, rtx before)
and output it before the insn BEFORE. */ and output it before the insn BEFORE. */
rtx_barrier * rtx_barrier *
emit_barrier_before (rtx before) emit_barrier_before (rtx_insn *before)
{ {
rtx_barrier *insn = as_a <rtx_barrier *> (rtx_alloc (BARRIER)); rtx_barrier *insn = as_a <rtx_barrier *> (rtx_alloc (BARRIER));
...@@ -4618,21 +4612,20 @@ emit_barrier_before (rtx before) ...@@ -4618,21 +4612,20 @@ emit_barrier_before (rtx before)
/* Emit the label LABEL before the insn BEFORE. */ /* Emit the label LABEL before the insn BEFORE. */
rtx_code_label * rtx_code_label *
emit_label_before (rtx label, rtx_insn *before) emit_label_before (rtx_code_label *label, rtx_insn *before)
{ {
gcc_checking_assert (INSN_UID (label) == 0); gcc_checking_assert (INSN_UID (label) == 0);
INSN_UID (label) = cur_insn_uid++; INSN_UID (label) = cur_insn_uid++;
add_insn_before (label, before, NULL); add_insn_before (label, before, NULL);
return as_a <rtx_code_label *> (label); return label;
} }
/* Helper for emit_insn_after, handles lists of instructions /* Helper for emit_insn_after, handles lists of instructions
efficiently. */ efficiently. */
static rtx_insn * static rtx_insn *
emit_insn_after_1 (rtx_insn *first, rtx uncast_after, basic_block bb) emit_insn_after_1 (rtx_insn *first, rtx_insn *after, basic_block bb)
{ {
rtx_insn *after = safe_as_a <rtx_insn *> (uncast_after);
rtx_insn *last; rtx_insn *last;
rtx_insn *after_after; rtx_insn *after_after;
if (!bb && !BARRIER_P (after)) if (!bb && !BARRIER_P (after))
...@@ -4674,10 +4667,9 @@ emit_insn_after_1 (rtx_insn *first, rtx uncast_after, basic_block bb) ...@@ -4674,10 +4667,9 @@ emit_insn_after_1 (rtx_insn *first, rtx uncast_after, basic_block bb)
} }
static rtx_insn * static rtx_insn *
emit_pattern_after_noloc (rtx x, rtx uncast_after, basic_block bb, emit_pattern_after_noloc (rtx x, rtx_insn *after, basic_block bb,
rtx_insn *(*make_raw)(rtx)) rtx_insn *(*make_raw)(rtx))
{ {
rtx_insn *after = safe_as_a <rtx_insn *> (uncast_after);
rtx_insn *last = after; rtx_insn *last = after;
gcc_assert (after); gcc_assert (after);
...@@ -4716,7 +4708,7 @@ emit_pattern_after_noloc (rtx x, rtx uncast_after, basic_block bb, ...@@ -4716,7 +4708,7 @@ emit_pattern_after_noloc (rtx x, rtx uncast_after, basic_block bb,
BB is NULL, an attempt is made to infer the BB from AFTER. */ BB is NULL, an attempt is made to infer the BB from AFTER. */
rtx_insn * rtx_insn *
emit_insn_after_noloc (rtx x, rtx after, basic_block bb) emit_insn_after_noloc (rtx x, rtx_insn *after, basic_block bb)
{ {
return emit_pattern_after_noloc (x, after, bb, make_insn_raw); return emit_pattern_after_noloc (x, after, bb, make_insn_raw);
} }
...@@ -4726,7 +4718,7 @@ emit_insn_after_noloc (rtx x, rtx after, basic_block bb) ...@@ -4726,7 +4718,7 @@ emit_insn_after_noloc (rtx x, rtx after, basic_block bb)
and output it after the insn AFTER. */ and output it after the insn AFTER. */
rtx_jump_insn * rtx_jump_insn *
emit_jump_insn_after_noloc (rtx x, rtx after) emit_jump_insn_after_noloc (rtx x, rtx_insn *after)
{ {
return as_a <rtx_jump_insn *> ( return as_a <rtx_jump_insn *> (
emit_pattern_after_noloc (x, after, NULL, make_jump_insn_raw)); emit_pattern_after_noloc (x, after, NULL, make_jump_insn_raw));
...@@ -4736,7 +4728,7 @@ emit_jump_insn_after_noloc (rtx x, rtx after) ...@@ -4736,7 +4728,7 @@ emit_jump_insn_after_noloc (rtx x, rtx after)
and output it after the instruction AFTER. */ and output it after the instruction AFTER. */
rtx_insn * rtx_insn *
emit_call_insn_after_noloc (rtx x, rtx after) emit_call_insn_after_noloc (rtx x, rtx_insn *after)
{ {
return emit_pattern_after_noloc (x, after, NULL, make_call_insn_raw); return emit_pattern_after_noloc (x, after, NULL, make_call_insn_raw);
} }
...@@ -4745,7 +4737,7 @@ emit_call_insn_after_noloc (rtx x, rtx after) ...@@ -4745,7 +4737,7 @@ emit_call_insn_after_noloc (rtx x, rtx after)
and output it after the instruction AFTER. */ and output it after the instruction AFTER. */
rtx_insn * rtx_insn *
emit_debug_insn_after_noloc (rtx x, rtx after) emit_debug_insn_after_noloc (rtx x, rtx_insn *after)
{ {
return emit_pattern_after_noloc (x, after, NULL, make_debug_insn_raw); return emit_pattern_after_noloc (x, after, NULL, make_debug_insn_raw);
} }
...@@ -4754,7 +4746,7 @@ emit_debug_insn_after_noloc (rtx x, rtx after) ...@@ -4754,7 +4746,7 @@ emit_debug_insn_after_noloc (rtx x, rtx after)
and output it after the insn AFTER. */ and output it after the insn AFTER. */
rtx_barrier * rtx_barrier *
emit_barrier_after (rtx after) emit_barrier_after (rtx_insn *after)
{ {
rtx_barrier *insn = as_a <rtx_barrier *> (rtx_alloc (BARRIER)); rtx_barrier *insn = as_a <rtx_barrier *> (rtx_alloc (BARRIER));
...@@ -4767,12 +4759,12 @@ emit_barrier_after (rtx after) ...@@ -4767,12 +4759,12 @@ emit_barrier_after (rtx after)
/* Emit the label LABEL after the insn AFTER. */ /* Emit the label LABEL after the insn AFTER. */
rtx_insn * rtx_insn *
emit_label_after (rtx label, rtx_insn *after) emit_label_after (rtx_insn *label, rtx_insn *after)
{ {
gcc_checking_assert (INSN_UID (label) == 0); gcc_checking_assert (INSN_UID (label) == 0);
INSN_UID (label) = cur_insn_uid++; INSN_UID (label) = cur_insn_uid++;
add_insn_after (label, after, NULL); add_insn_after (label, after, NULL);
return as_a <rtx_insn *> (label); return label;
} }
/* Notes require a bit of special handling: Some notes need to have their /* Notes require a bit of special handling: Some notes need to have their
...@@ -4842,10 +4834,9 @@ emit_note_before (enum insn_note subtype, rtx_insn *before) ...@@ -4842,10 +4834,9 @@ emit_note_before (enum insn_note subtype, rtx_insn *before)
MAKE_RAW indicates how to turn PATTERN into a real insn. */ MAKE_RAW indicates how to turn PATTERN into a real insn. */
static rtx_insn * static rtx_insn *
emit_pattern_after_setloc (rtx pattern, rtx uncast_after, int loc, emit_pattern_after_setloc (rtx pattern, rtx_insn *after, location_t loc,
rtx_insn *(*make_raw) (rtx)) rtx_insn *(*make_raw) (rtx))
{ {
rtx_insn *after = safe_as_a <rtx_insn *> (uncast_after);
rtx_insn *last = emit_pattern_after_noloc (pattern, after, NULL, make_raw); rtx_insn *last = emit_pattern_after_noloc (pattern, after, NULL, make_raw);
if (pattern == NULL_RTX || !loc) if (pattern == NULL_RTX || !loc)
...@@ -4889,7 +4880,7 @@ emit_pattern_after (rtx pattern, rtx uncast_after, bool skip_debug_insns, ...@@ -4889,7 +4880,7 @@ emit_pattern_after (rtx pattern, rtx uncast_after, bool skip_debug_insns,
/* Like emit_insn_after_noloc, but set INSN_LOCATION according to LOC. */ /* Like emit_insn_after_noloc, but set INSN_LOCATION according to LOC. */
rtx_insn * rtx_insn *
emit_insn_after_setloc (rtx pattern, rtx after, int loc) emit_insn_after_setloc (rtx pattern, rtx_insn *after, location_t loc)
{ {
return emit_pattern_after_setloc (pattern, after, loc, make_insn_raw); return emit_pattern_after_setloc (pattern, after, loc, make_insn_raw);
} }
...@@ -4903,7 +4894,7 @@ emit_insn_after (rtx pattern, rtx after) ...@@ -4903,7 +4894,7 @@ emit_insn_after (rtx pattern, rtx after)
/* Like emit_jump_insn_after_noloc, but set INSN_LOCATION according to LOC. */ /* Like emit_jump_insn_after_noloc, but set INSN_LOCATION according to LOC. */
rtx_jump_insn * rtx_jump_insn *
emit_jump_insn_after_setloc (rtx pattern, rtx after, int loc) emit_jump_insn_after_setloc (rtx pattern, rtx_insn *after, location_t loc)
{ {
return as_a <rtx_jump_insn *> ( return as_a <rtx_jump_insn *> (
emit_pattern_after_setloc (pattern, after, loc, make_jump_insn_raw)); emit_pattern_after_setloc (pattern, after, loc, make_jump_insn_raw));
...@@ -4919,7 +4910,7 @@ emit_jump_insn_after (rtx pattern, rtx after) ...@@ -4919,7 +4910,7 @@ emit_jump_insn_after (rtx pattern, rtx after)
/* Like emit_call_insn_after_noloc, but set INSN_LOCATION according to LOC. */ /* Like emit_call_insn_after_noloc, but set INSN_LOCATION according to LOC. */
rtx_insn * rtx_insn *
emit_call_insn_after_setloc (rtx pattern, rtx after, int loc) emit_call_insn_after_setloc (rtx pattern, rtx_insn *after, location_t loc)
{ {
return emit_pattern_after_setloc (pattern, after, loc, make_call_insn_raw); return emit_pattern_after_setloc (pattern, after, loc, make_call_insn_raw);
} }
...@@ -4933,7 +4924,7 @@ emit_call_insn_after (rtx pattern, rtx after) ...@@ -4933,7 +4924,7 @@ emit_call_insn_after (rtx pattern, rtx after)
/* Like emit_debug_insn_after_noloc, but set INSN_LOCATION according to LOC. */ /* Like emit_debug_insn_after_noloc, but set INSN_LOCATION according to LOC. */
rtx_insn * rtx_insn *
emit_debug_insn_after_setloc (rtx pattern, rtx after, int loc) emit_debug_insn_after_setloc (rtx pattern, rtx_insn *after, location_t loc)
{ {
return emit_pattern_after_setloc (pattern, after, loc, make_debug_insn_raw); return emit_pattern_after_setloc (pattern, after, loc, make_debug_insn_raw);
} }
...@@ -4951,13 +4942,12 @@ emit_debug_insn_after (rtx pattern, rtx after) ...@@ -4951,13 +4942,12 @@ emit_debug_insn_after (rtx pattern, rtx after)
CALL_INSN, etc. */ CALL_INSN, etc. */
static rtx_insn * static rtx_insn *
emit_pattern_before_setloc (rtx pattern, rtx uncast_before, int loc, bool insnp, emit_pattern_before_setloc (rtx pattern, rtx_insn *before, location_t loc,
rtx_insn *(*make_raw) (rtx)) bool insnp, rtx_insn *(*make_raw) (rtx))
{ {
rtx_insn *before = as_a <rtx_insn *> (uncast_before);
rtx_insn *first = PREV_INSN (before); rtx_insn *first = PREV_INSN (before);
rtx_insn *last = emit_pattern_before_noloc (pattern, before, rtx_insn *last = emit_pattern_before_noloc (pattern, before,
insnp ? before : NULL_RTX, insnp ? before : NULL,
NULL, make_raw); NULL, make_raw);
if (pattern == NULL_RTX || !loc) if (pattern == NULL_RTX || !loc)
...@@ -5001,13 +4991,13 @@ emit_pattern_before (rtx pattern, rtx uncast_before, bool skip_debug_insns, ...@@ -5001,13 +4991,13 @@ emit_pattern_before (rtx pattern, rtx uncast_before, bool skip_debug_insns,
insnp, make_raw); insnp, make_raw);
else else
return emit_pattern_before_noloc (pattern, before, return emit_pattern_before_noloc (pattern, before,
insnp ? before : NULL_RTX, insnp ? before : NULL,
NULL, make_raw); NULL, make_raw);
} }
/* Like emit_insn_before_noloc, but set INSN_LOCATION according to LOC. */ /* Like emit_insn_before_noloc, but set INSN_LOCATION according to LOC. */
rtx_insn * rtx_insn *
emit_insn_before_setloc (rtx pattern, rtx_insn *before, int loc) emit_insn_before_setloc (rtx pattern, rtx_insn *before, location_t loc)
{ {
return emit_pattern_before_setloc (pattern, before, loc, true, return emit_pattern_before_setloc (pattern, before, loc, true,
make_insn_raw); make_insn_raw);
...@@ -5022,7 +5012,7 @@ emit_insn_before (rtx pattern, rtx before) ...@@ -5022,7 +5012,7 @@ emit_insn_before (rtx pattern, rtx before)
/* like emit_insn_before_noloc, but set INSN_LOCATION according to LOC. */ /* like emit_insn_before_noloc, but set INSN_LOCATION according to LOC. */
rtx_jump_insn * rtx_jump_insn *
emit_jump_insn_before_setloc (rtx pattern, rtx_insn *before, int loc) emit_jump_insn_before_setloc (rtx pattern, rtx_insn *before, location_t loc)
{ {
return as_a <rtx_jump_insn *> ( return as_a <rtx_jump_insn *> (
emit_pattern_before_setloc (pattern, before, loc, false, emit_pattern_before_setloc (pattern, before, loc, false,
...@@ -5040,7 +5030,7 @@ emit_jump_insn_before (rtx pattern, rtx before) ...@@ -5040,7 +5030,7 @@ emit_jump_insn_before (rtx pattern, rtx before)
/* Like emit_insn_before_noloc, but set INSN_LOCATION according to LOC. */ /* Like emit_insn_before_noloc, but set INSN_LOCATION according to LOC. */
rtx_insn * rtx_insn *
emit_call_insn_before_setloc (rtx pattern, rtx_insn *before, int loc) emit_call_insn_before_setloc (rtx pattern, rtx_insn *before, location_t loc)
{ {
return emit_pattern_before_setloc (pattern, before, loc, false, return emit_pattern_before_setloc (pattern, before, loc, false,
make_call_insn_raw); make_call_insn_raw);
...@@ -5057,7 +5047,7 @@ emit_call_insn_before (rtx pattern, rtx_insn *before) ...@@ -5057,7 +5047,7 @@ emit_call_insn_before (rtx pattern, rtx_insn *before)
/* Like emit_insn_before_noloc, but set INSN_LOCATION according to LOC. */ /* Like emit_insn_before_noloc, but set INSN_LOCATION according to LOC. */
rtx_insn * rtx_insn *
emit_debug_insn_before_setloc (rtx pattern, rtx before, int loc) emit_debug_insn_before_setloc (rtx pattern, rtx_insn *before, location_t loc)
{ {
return emit_pattern_before_setloc (pattern, before, loc, false, return emit_pattern_before_setloc (pattern, before, loc, false,
make_debug_insn_raw); make_debug_insn_raw);
......
...@@ -3216,33 +3216,34 @@ extern void decide_function_section (tree); ...@@ -3216,33 +3216,34 @@ extern void decide_function_section (tree);
/* In emit-rtl.c */ /* In emit-rtl.c */
extern rtx_insn *emit_insn_before (rtx, rtx); extern rtx_insn *emit_insn_before (rtx, rtx);
extern rtx_insn *emit_insn_before_noloc (rtx, rtx_insn *, basic_block); extern rtx_insn *emit_insn_before_noloc (rtx, rtx_insn *, basic_block);
extern rtx_insn *emit_insn_before_setloc (rtx, rtx_insn *, int); extern rtx_insn *emit_insn_before_setloc (rtx, rtx_insn *, location_t);
extern rtx_jump_insn *emit_jump_insn_before (rtx, rtx); extern rtx_jump_insn *emit_jump_insn_before (rtx, rtx);
extern rtx_jump_insn *emit_jump_insn_before_noloc (rtx, rtx_insn *); extern rtx_jump_insn *emit_jump_insn_before_noloc (rtx, rtx_insn *);
extern rtx_jump_insn *emit_jump_insn_before_setloc (rtx, rtx_insn *, int); extern rtx_jump_insn *emit_jump_insn_before_setloc (rtx, rtx_insn *,
location_t);
extern rtx_insn *emit_call_insn_before (rtx, rtx_insn *); extern rtx_insn *emit_call_insn_before (rtx, rtx_insn *);
extern rtx_insn *emit_call_insn_before_noloc (rtx, rtx_insn *); extern rtx_insn *emit_call_insn_before_noloc (rtx, rtx_insn *);
extern rtx_insn *emit_call_insn_before_setloc (rtx, rtx_insn *, int); extern rtx_insn *emit_call_insn_before_setloc (rtx, rtx_insn *, location_t);
extern rtx_insn *emit_debug_insn_before (rtx, rtx_insn *); extern rtx_insn *emit_debug_insn_before (rtx, rtx_insn *);
extern rtx_insn *emit_debug_insn_before_noloc (rtx, rtx); extern rtx_insn *emit_debug_insn_before_noloc (rtx, rtx);
extern rtx_insn *emit_debug_insn_before_setloc (rtx, rtx, int); extern rtx_insn *emit_debug_insn_before_setloc (rtx, rtx_insn *, location_t);
extern rtx_barrier *emit_barrier_before (rtx); extern rtx_barrier *emit_barrier_before (rtx_insn *);
extern rtx_code_label *emit_label_before (rtx, rtx_insn *); extern rtx_code_label *emit_label_before (rtx_code_label *, rtx_insn *);
extern rtx_note *emit_note_before (enum insn_note, rtx_insn *); extern rtx_note *emit_note_before (enum insn_note, rtx_insn *);
extern rtx_insn *emit_insn_after (rtx, rtx); extern rtx_insn *emit_insn_after (rtx, rtx);
extern rtx_insn *emit_insn_after_noloc (rtx, rtx, basic_block); extern rtx_insn *emit_insn_after_noloc (rtx, rtx_insn *, basic_block);
extern rtx_insn *emit_insn_after_setloc (rtx, rtx, int); extern rtx_insn *emit_insn_after_setloc (rtx, rtx_insn *, location_t);
extern rtx_jump_insn *emit_jump_insn_after (rtx, rtx); extern rtx_jump_insn *emit_jump_insn_after (rtx, rtx);
extern rtx_jump_insn *emit_jump_insn_after_noloc (rtx, rtx); extern rtx_jump_insn *emit_jump_insn_after_noloc (rtx, rtx_insn *);
extern rtx_jump_insn *emit_jump_insn_after_setloc (rtx, rtx, int); extern rtx_jump_insn *emit_jump_insn_after_setloc (rtx, rtx_insn *, location_t);
extern rtx_insn *emit_call_insn_after (rtx, rtx); extern rtx_insn *emit_call_insn_after (rtx, rtx);
extern rtx_insn *emit_call_insn_after_noloc (rtx, rtx); extern rtx_insn *emit_call_insn_after_noloc (rtx, rtx_insn *);
extern rtx_insn *emit_call_insn_after_setloc (rtx, rtx, int); extern rtx_insn *emit_call_insn_after_setloc (rtx, rtx_insn *, location_t);
extern rtx_insn *emit_debug_insn_after (rtx, rtx); extern rtx_insn *emit_debug_insn_after (rtx, rtx);
extern rtx_insn *emit_debug_insn_after_noloc (rtx, rtx); extern rtx_insn *emit_debug_insn_after_noloc (rtx, rtx_insn *);
extern rtx_insn *emit_debug_insn_after_setloc (rtx, rtx, int); extern rtx_insn *emit_debug_insn_after_setloc (rtx, rtx_insn *, location_t);
extern rtx_barrier *emit_barrier_after (rtx); extern rtx_barrier *emit_barrier_after (rtx_insn *);
extern rtx_insn *emit_label_after (rtx, rtx_insn *); extern rtx_insn *emit_label_after (rtx_insn *, rtx_insn *);
extern rtx_note *emit_note_after (enum insn_note, rtx_insn *); extern rtx_note *emit_note_after (enum insn_note, rtx_insn *);
extern rtx_insn *emit_insn (rtx); extern rtx_insn *emit_insn (rtx);
extern rtx_insn *emit_debug_insn (rtx); extern rtx_insn *emit_debug_insn (rtx);
...@@ -3271,7 +3272,7 @@ extern rtx_insn *prev_nonnote_nondebug_insn_bb (rtx_insn *); ...@@ -3271,7 +3272,7 @@ extern rtx_insn *prev_nonnote_nondebug_insn_bb (rtx_insn *);
extern rtx_insn *next_nonnote_nondebug_insn (rtx_insn *); extern rtx_insn *next_nonnote_nondebug_insn (rtx_insn *);
extern rtx_insn *next_nonnote_nondebug_insn_bb (rtx_insn *); extern rtx_insn *next_nonnote_nondebug_insn_bb (rtx_insn *);
extern rtx_insn *prev_real_insn (rtx_insn *); extern rtx_insn *prev_real_insn (rtx_insn *);
extern rtx_insn *next_real_insn (rtx); extern rtx_insn *next_real_insn (rtx_insn *);
extern rtx_insn *prev_real_nondebug_insn (rtx_insn *); extern rtx_insn *prev_real_nondebug_insn (rtx_insn *);
extern rtx_insn *next_real_nondebug_insn (rtx); extern rtx_insn *next_real_nondebug_insn (rtx);
extern rtx_insn *prev_active_insn (rtx_insn *); extern rtx_insn *prev_active_insn (rtx_insn *);
...@@ -3963,9 +3964,9 @@ extern void unshare_all_rtl_again (rtx_insn *); ...@@ -3963,9 +3964,9 @@ extern void unshare_all_rtl_again (rtx_insn *);
extern void unshare_all_rtl_in_chain (rtx_insn *); extern void unshare_all_rtl_in_chain (rtx_insn *);
extern void verify_rtl_sharing (void); extern void verify_rtl_sharing (void);
extern void add_insn (rtx_insn *); extern void add_insn (rtx_insn *);
extern void add_insn_before (rtx, rtx, basic_block); extern void add_insn_before (rtx_insn *, rtx_insn *, basic_block);
extern void add_insn_after (rtx, rtx, basic_block); extern void add_insn_after (rtx_insn *, rtx_insn *, basic_block);
extern void remove_insn (rtx); extern void remove_insn (rtx_insn *);
extern rtx_insn *emit (rtx, bool = true); extern rtx_insn *emit (rtx, bool = true);
extern void emit_insn_at_entry (rtx); extern void emit_insn_at_entry (rtx);
extern rtx gen_lowpart_SUBREG (machine_mode, rtx); extern rtx gen_lowpart_SUBREG (machine_mode, rtx);
......
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