Commit cd459bf8 by David Malcolm Committed by David Malcolm

emit_* functions return rtx_insn

2014-08-19  David Malcolm  <dmalcolm@redhat.com>

	* emit-rtl.h (emit_copy_of_insn_after): Strengthen return type
	from rtx to rtx_insn *.

	* rtl.h (emit_insn_before): Likewise.
	(emit_insn_before_noloc): Likewise.
	(emit_insn_before_setloc): Likewise.
	(emit_jump_insn_before): Likewise.
	(emit_jump_insn_before_noloc): Likewise.
	(emit_jump_insn_before_setloc): Likewise.
	(emit_call_insn_before): Likewise.
	(emit_call_insn_before_noloc): Likewise.
	(emit_call_insn_before_setloc): Likewise.
	(emit_debug_insn_before): Likewise.
	(emit_debug_insn_before_noloc): Likewise.
	(emit_debug_insn_before_setloc): Likewise.
	(emit_label_before): Likewise.
	(emit_insn_after): Likewise.
	(emit_insn_after_noloc): Likewise.
	(emit_insn_after_setloc): Likewise.
	(emit_jump_insn_after): Likewise.
	(emit_jump_insn_after_noloc): Likewise.
	(emit_jump_insn_after_setloc): Likewise.
	(emit_call_insn_after): Likewise.
	(emit_call_insn_after_noloc): Likewise.
	(emit_call_insn_after_setloc): Likewise.
	(emit_debug_insn_after): Likewise.
	(emit_debug_insn_after_noloc): Likewise.
	(emit_debug_insn_after_setloc): Likewise.
	(emit_label_after): Likewise.
	(emit_insn): Likewise.
	(emit_debug_insn): Likewise.
	(emit_jump_insn): Likewise.
	(emit_call_insn): Likewise.
	(emit_label): Likewise.
	(gen_clobber): Likewise.
	(emit_clobber): Likewise.
	(gen_use): Likewise.
	(emit_use): Likewise.
	(emit): Likewise.

	(emit_barrier_before): Strengthen return type from rtx to
	rtx_barrier *.
	(emit_barrier_after): Likewise.
	(emit_barrier): Likewise.

	* emit-rtl.c (emit_pattern_before_noloc):  Strengthen return type
	from rtx to rtx_insn *.  Add checked casts for now when converting
	"last" from rtx to rtx_insn *.
	(emit_insn_before_noloc): Likewise for return type.
	(emit_jump_insn_before_noloc): Likewise.
	(emit_call_insn_before_noloc): Likewise.
	(emit_debug_insn_before_noloc): Likewise.
	(emit_barrier_before): Strengthen return type and local "insn"
	from rtx to rtx_barrier *.
	(emit_label_before): Strengthen return type from rtx to
	rtx_insn *.  Add checked cast for now when returning param
	(emit_pattern_after_noloc): Strengthen return type from rtx to
	rtx_insn *.  Add checked casts for now when converting "last" from
	rtx to rtx_insn *.
	(emit_insn_after_noloc): Strengthen return type from rtx to
	rtx_insn *.
	(emit_jump_insn_after_noloc): Likewise.
	(emit_call_insn_after_noloc): Likewise.
	(emit_debug_insn_after_noloc): Likewise.
	(emit_barrier_after): Strengthen return type from rtx to
	rtx_barrier *.
	(emit_label_after): Strengthen return type from rtx to rtx_insn *.
	Add checked cast for now when converting "label" from rtx to
	rtx_insn *.
	(emit_pattern_after_setloc): Strengthen return type from rtx to
	rtx_insn *.  Add checked casts for now when converting "last" from
	rtx to rtx_insn *.
	(emit_pattern_after): Strengthen return type from rtx to
	rtx_insn *.
	(emit_insn_after_setloc): Likewise.
	(emit_insn_after): Likewise.
	(emit_jump_insn_after_setloc): Likewise.
	(emit_jump_insn_after): Likewise.
	(emit_call_insn_after_setloc): Likewise.
	(emit_call_insn_after): Likewise.
	(emit_debug_insn_after_setloc): Likewise.
	(emit_debug_insn_after): Likewise.
	(emit_pattern_before_setloc): Likewise.  Add checked casts for now
	when converting "last" from rtx to rtx_insn *.
	(emit_pattern_before): Strengthen return type from rtx to
	rtx_insn *.
	(emit_insn_before_setloc): Likewise.
	(emit_insn_before): Likewise.
	(emit_jump_insn_before_setloc): Likewise.
	(emit_jump_insn_before): Likewise.
	(emit_call_insn_before_setloc): Likewise.
	(emit_call_insn_before): Likewise.
	(emit_debug_insn_before_setloc): Likewise.
	(emit_debug_insn_before): Likewise.
	(emit_insn): Strengthen return type and locals "last", "insn",
	"next" from rtx to rtx_insn *.  Add checked cast to rtx_insn
	within cases where we know we have an insn.
	(emit_debug_insn): Likewise.
	(emit_jump_insn): Likewise.
	(emit_call_insn): Strengthen return type and local "insn" from rtx
	to rtx_insn *.
	(emit_label): Strengthen return type from rtx to rtx_insn *.  Add
	a checked cast to rtx_insn * for now on "label".
	(emit_barrier): Strengthen return type from rtx to rtx_barrier *.
	(emit_clobber): Strengthen return type from rtx to rtx_insn *.
	(emit_use): Likewise.
	(gen_use): Likewise, also for local "seq".
	(emit): Likewise for return type and local "insn".
	(rtx_insn): Likewise for return type and local "new_rtx".

	* cfgrtl.c (emit_barrier_after_bb): Strengthen local "barrier"
	from rtx to rtx_barrier *.

	* config/sh/sh.c (output_stack_adjust): Since emit_insn has
	changed return type from rtx to rtx_insn *, we must update
	"emit_fn" type, and this in turn means updating...
	(frame_insn): ...this.  Strengthen return type from rtx to
	rtx_insn *.  Introduce a new local "insn" of the appropriate type.

From-SVN: r214194
parent 4598afdd
2014-08-19 David Malcolm <dmalcolm@redhat.com> 2014-08-19 David Malcolm <dmalcolm@redhat.com>
* emit-rtl.h (emit_copy_of_insn_after): Strengthen return type
from rtx to rtx_insn *.
* rtl.h (emit_insn_before): Likewise.
(emit_insn_before_noloc): Likewise.
(emit_insn_before_setloc): Likewise.
(emit_jump_insn_before): Likewise.
(emit_jump_insn_before_noloc): Likewise.
(emit_jump_insn_before_setloc): Likewise.
(emit_call_insn_before): Likewise.
(emit_call_insn_before_noloc): Likewise.
(emit_call_insn_before_setloc): Likewise.
(emit_debug_insn_before): Likewise.
(emit_debug_insn_before_noloc): Likewise.
(emit_debug_insn_before_setloc): Likewise.
(emit_label_before): Likewise.
(emit_insn_after): Likewise.
(emit_insn_after_noloc): Likewise.
(emit_insn_after_setloc): Likewise.
(emit_jump_insn_after): Likewise.
(emit_jump_insn_after_noloc): Likewise.
(emit_jump_insn_after_setloc): Likewise.
(emit_call_insn_after): Likewise.
(emit_call_insn_after_noloc): Likewise.
(emit_call_insn_after_setloc): Likewise.
(emit_debug_insn_after): Likewise.
(emit_debug_insn_after_noloc): Likewise.
(emit_debug_insn_after_setloc): Likewise.
(emit_label_after): Likewise.
(emit_insn): Likewise.
(emit_debug_insn): Likewise.
(emit_jump_insn): Likewise.
(emit_call_insn): Likewise.
(emit_label): Likewise.
(gen_clobber): Likewise.
(emit_clobber): Likewise.
(gen_use): Likewise.
(emit_use): Likewise.
(emit): Likewise.
(emit_barrier_before): Strengthen return type from rtx to
rtx_barrier *.
(emit_barrier_after): Likewise.
(emit_barrier): Likewise.
* emit-rtl.c (emit_pattern_before_noloc): Strengthen return type
from rtx to rtx_insn *. Add checked casts for now when converting
"last" from rtx to rtx_insn *.
(emit_insn_before_noloc): Likewise for return type.
(emit_jump_insn_before_noloc): Likewise.
(emit_call_insn_before_noloc): Likewise.
(emit_debug_insn_before_noloc): Likewise.
(emit_barrier_before): Strengthen return type and local "insn"
from rtx to rtx_barrier *.
(emit_label_before): Strengthen return type from rtx to
rtx_insn *. Add checked cast for now when returning param
(emit_pattern_after_noloc): Strengthen return type from rtx to
rtx_insn *. Add checked casts for now when converting "last" from
rtx to rtx_insn *.
(emit_insn_after_noloc): Strengthen return type from rtx to
rtx_insn *.
(emit_jump_insn_after_noloc): Likewise.
(emit_call_insn_after_noloc): Likewise.
(emit_debug_insn_after_noloc): Likewise.
(emit_barrier_after): Strengthen return type from rtx to
rtx_barrier *.
(emit_label_after): Strengthen return type from rtx to rtx_insn *.
Add checked cast for now when converting "label" from rtx to
rtx_insn *.
(emit_pattern_after_setloc): Strengthen return type from rtx to
rtx_insn *. Add checked casts for now when converting "last" from
rtx to rtx_insn *.
(emit_pattern_after): Strengthen return type from rtx to
rtx_insn *.
(emit_insn_after_setloc): Likewise.
(emit_insn_after): Likewise.
(emit_jump_insn_after_setloc): Likewise.
(emit_jump_insn_after): Likewise.
(emit_call_insn_after_setloc): Likewise.
(emit_call_insn_after): Likewise.
(emit_debug_insn_after_setloc): Likewise.
(emit_debug_insn_after): Likewise.
(emit_pattern_before_setloc): Likewise. Add checked casts for now
when converting "last" from rtx to rtx_insn *.
(emit_pattern_before): Strengthen return type from rtx to
rtx_insn *.
(emit_insn_before_setloc): Likewise.
(emit_insn_before): Likewise.
(emit_jump_insn_before_setloc): Likewise.
(emit_jump_insn_before): Likewise.
(emit_call_insn_before_setloc): Likewise.
(emit_call_insn_before): Likewise.
(emit_debug_insn_before_setloc): Likewise.
(emit_debug_insn_before): Likewise.
(emit_insn): Strengthen return type and locals "last", "insn",
"next" from rtx to rtx_insn *. Add checked cast to rtx_insn
within cases where we know we have an insn.
(emit_debug_insn): Likewise.
(emit_jump_insn): Likewise.
(emit_call_insn): Strengthen return type and local "insn" from rtx
to rtx_insn *.
(emit_label): Strengthen return type from rtx to rtx_insn *. Add
a checked cast to rtx_insn * for now on "label".
(emit_barrier): Strengthen return type from rtx to rtx_barrier *.
(emit_clobber): Strengthen return type from rtx to rtx_insn *.
(emit_use): Likewise.
(gen_use): Likewise, also for local "seq".
(emit): Likewise for return type and local "insn".
(rtx_insn): Likewise for return type and local "new_rtx".
* cfgrtl.c (emit_barrier_after_bb): Strengthen local "barrier"
from rtx to rtx_barrier *.
* config/sh/sh.c (output_stack_adjust): Since emit_insn has
changed return type from rtx to rtx_insn *, we must update
"emit_fn" type, and this in turn means updating...
(frame_insn): ...this. Strengthen return type from rtx to
rtx_insn *. Introduce a new local "insn" of the appropriate type.
2014-08-19 David Malcolm <dmalcolm@redhat.com>
* emit-rtl.c (emit_jump_table_data): Strengthen return type from * emit-rtl.c (emit_jump_table_data): Strengthen return type from
rtx to rtx_jump_table_data *. Also for local. rtx to rtx_jump_table_data *. Also for local.
* rtl.h (emit_jump_table_data): Likewise. * rtl.h (emit_jump_table_data): Likewise.
......
...@@ -1446,7 +1446,7 @@ rtl_redirect_edge_and_branch (edge e, basic_block target) ...@@ -1446,7 +1446,7 @@ rtl_redirect_edge_and_branch (edge e, basic_block target)
void void
emit_barrier_after_bb (basic_block bb) emit_barrier_after_bb (basic_block bb)
{ {
rtx barrier = emit_barrier_after (BB_END (bb)); rtx_barrier *barrier = emit_barrier_after (BB_END (bb));
gcc_assert (current_ir_type () == IR_RTL_CFGRTL gcc_assert (current_ir_type () == IR_RTL_CFGRTL
|| current_ir_type () == IR_RTL_CFGLAYOUT); || current_ir_type () == IR_RTL_CFGLAYOUT);
if (current_ir_type () == IR_RTL_CFGLAYOUT) if (current_ir_type () == IR_RTL_CFGLAYOUT)
......
...@@ -195,7 +195,7 @@ static rtx gen_block_redirect (rtx, int, int); ...@@ -195,7 +195,7 @@ static rtx gen_block_redirect (rtx, int, int);
static void sh_reorg (void); static void sh_reorg (void);
static void sh_option_override (void); static void sh_option_override (void);
static void output_stack_adjust (int, rtx, int, HARD_REG_SET *, bool); static void output_stack_adjust (int, rtx, int, HARD_REG_SET *, bool);
static rtx frame_insn (rtx); static rtx_insn *frame_insn (rtx);
static rtx push (int); static rtx push (int);
static void pop (int); static void pop (int);
static void push_regs (HARD_REG_SET *, int); static void push_regs (HARD_REG_SET *, int);
...@@ -6784,7 +6784,7 @@ static void ...@@ -6784,7 +6784,7 @@ static void
output_stack_adjust (int size, rtx reg, int epilogue_p, output_stack_adjust (int size, rtx reg, int epilogue_p,
HARD_REG_SET *live_regs_mask, bool frame_p) HARD_REG_SET *live_regs_mask, bool frame_p)
{ {
rtx (*emit_fn) (rtx) = frame_p ? &frame_insn : &emit_insn; rtx_insn *(*emit_fn) (rtx) = frame_p ? &frame_insn : &emit_insn;
if (size) if (size)
{ {
HOST_WIDE_INT align = STACK_BOUNDARY / BITS_PER_UNIT; HOST_WIDE_INT align = STACK_BOUNDARY / BITS_PER_UNIT;
...@@ -6944,12 +6944,12 @@ output_stack_adjust (int size, rtx reg, int epilogue_p, ...@@ -6944,12 +6944,12 @@ output_stack_adjust (int size, rtx reg, int epilogue_p,
/* Emit the specified insn and mark it as frame related. /* Emit the specified insn and mark it as frame related.
FIXME: Rename this to emit_frame_insn. */ FIXME: Rename this to emit_frame_insn. */
static rtx static rtx_insn *
frame_insn (rtx x) frame_insn (rtx x)
{ {
x = emit_insn (x); rtx_insn *insn = emit_insn (x);
RTX_FRAME_RELATED_P (x) = 1; RTX_FRAME_RELATED_P (insn) = 1;
return x; return insn;
} }
/* Output RTL to push register RN onto the stack. */ /* Output RTL to push register RN onto the stack. */
......
...@@ -4269,7 +4269,7 @@ reorder_insns (rtx from, rtx to, rtx after) ...@@ -4269,7 +4269,7 @@ reorder_insns (rtx from, rtx to, rtx after)
SEQUENCE rtl results in much fragmented RTL memory since the SEQUENCE SEQUENCE rtl results in much fragmented RTL memory since the SEQUENCE
generated would almost certainly die right after it was created. */ generated would almost certainly die right after it was created. */
static rtx static rtx_insn *
emit_pattern_before_noloc (rtx x, rtx before, rtx last, basic_block bb, emit_pattern_before_noloc (rtx x, rtx before, rtx last, basic_block bb,
rtx_insn *(*make_raw) (rtx)) rtx_insn *(*make_raw) (rtx))
{ {
...@@ -4278,7 +4278,7 @@ emit_pattern_before_noloc (rtx x, rtx before, rtx last, basic_block bb, ...@@ -4278,7 +4278,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 last; return safe_as_a <rtx_insn *> (last);
switch (GET_CODE (x)) switch (GET_CODE (x))
{ {
...@@ -4311,12 +4311,12 @@ emit_pattern_before_noloc (rtx x, rtx before, rtx last, basic_block bb, ...@@ -4311,12 +4311,12 @@ emit_pattern_before_noloc (rtx x, rtx before, rtx last, basic_block bb,
break; break;
} }
return last; return safe_as_a <rtx_insn *> (last);
} }
/* Make X be output before the instruction BEFORE. */ /* Make X be output before the instruction BEFORE. */
rtx rtx_insn *
emit_insn_before_noloc (rtx x, rtx before, basic_block bb) emit_insn_before_noloc (rtx x, rtx before, basic_block bb)
{ {
return emit_pattern_before_noloc (x, before, before, bb, make_insn_raw); return emit_pattern_before_noloc (x, before, before, bb, make_insn_raw);
...@@ -4325,7 +4325,7 @@ emit_insn_before_noloc (rtx x, rtx before, basic_block bb) ...@@ -4325,7 +4325,7 @@ emit_insn_before_noloc (rtx x, rtx before, basic_block bb)
/* Make an instruction with body X and code JUMP_INSN /* Make an instruction with body X and code JUMP_INSN
and output it before the instruction BEFORE. */ and output it before the instruction BEFORE. */
rtx rtx_insn *
emit_jump_insn_before_noloc (rtx x, rtx before) emit_jump_insn_before_noloc (rtx x, rtx before)
{ {
return emit_pattern_before_noloc (x, before, NULL_RTX, NULL, return emit_pattern_before_noloc (x, before, NULL_RTX, NULL,
...@@ -4335,7 +4335,7 @@ emit_jump_insn_before_noloc (rtx x, rtx before) ...@@ -4335,7 +4335,7 @@ emit_jump_insn_before_noloc (rtx x, rtx before)
/* Make an instruction with body X and code CALL_INSN /* Make an instruction with body X and code CALL_INSN
and output it before the instruction BEFORE. */ and output it before the instruction BEFORE. */
rtx rtx_insn *
emit_call_insn_before_noloc (rtx x, rtx before) emit_call_insn_before_noloc (rtx x, rtx before)
{ {
return emit_pattern_before_noloc (x, before, NULL_RTX, NULL, return emit_pattern_before_noloc (x, before, NULL_RTX, NULL,
...@@ -4345,7 +4345,7 @@ emit_call_insn_before_noloc (rtx x, rtx before) ...@@ -4345,7 +4345,7 @@ emit_call_insn_before_noloc (rtx x, rtx before)
/* Make an instruction with body X and code DEBUG_INSN /* Make an instruction with body X and code DEBUG_INSN
and output it before the instruction BEFORE. */ and output it before the instruction BEFORE. */
rtx rtx_insn *
emit_debug_insn_before_noloc (rtx x, rtx before) emit_debug_insn_before_noloc (rtx x, rtx before)
{ {
return emit_pattern_before_noloc (x, before, NULL_RTX, NULL, return emit_pattern_before_noloc (x, before, NULL_RTX, NULL,
...@@ -4355,10 +4355,10 @@ emit_debug_insn_before_noloc (rtx x, rtx before) ...@@ -4355,10 +4355,10 @@ emit_debug_insn_before_noloc (rtx x, rtx before)
/* Make an insn of code BARRIER /* Make an insn of code BARRIER
and output it before the insn BEFORE. */ and output it before the insn BEFORE. */
rtx rtx_barrier *
emit_barrier_before (rtx before) emit_barrier_before (rtx before)
{ {
rtx insn = rtx_alloc (BARRIER); rtx_barrier *insn = as_a <rtx_barrier *> (rtx_alloc (BARRIER));
INSN_UID (insn) = cur_insn_uid++; INSN_UID (insn) = cur_insn_uid++;
...@@ -4368,13 +4368,13 @@ emit_barrier_before (rtx before) ...@@ -4368,13 +4368,13 @@ emit_barrier_before (rtx before)
/* Emit the label LABEL before the insn BEFORE. */ /* Emit the label LABEL before the insn BEFORE. */
rtx rtx_insn *
emit_label_before (rtx label, rtx before) emit_label_before (rtx label, rtx 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 label; return as_a <rtx_insn *> (label);
} }
/* Helper for emit_insn_after, handles lists of instructions /* Helper for emit_insn_after, handles lists of instructions
...@@ -4423,7 +4423,7 @@ emit_insn_after_1 (rtx first, rtx after, basic_block bb) ...@@ -4423,7 +4423,7 @@ emit_insn_after_1 (rtx first, rtx after, basic_block bb)
return last; return last;
} }
static rtx static rtx_insn *
emit_pattern_after_noloc (rtx x, rtx after, basic_block bb, emit_pattern_after_noloc (rtx x, rtx after, basic_block bb,
rtx_insn *(*make_raw)(rtx)) rtx_insn *(*make_raw)(rtx))
{ {
...@@ -4432,7 +4432,7 @@ emit_pattern_after_noloc (rtx x, rtx after, basic_block bb, ...@@ -4432,7 +4432,7 @@ emit_pattern_after_noloc (rtx x, rtx after, basic_block bb,
gcc_assert (after); gcc_assert (after);
if (x == NULL_RTX) if (x == NULL_RTX)
return last; return safe_as_a <rtx_insn *> (last);
switch (GET_CODE (x)) switch (GET_CODE (x))
{ {
...@@ -4458,13 +4458,13 @@ emit_pattern_after_noloc (rtx x, rtx after, basic_block bb, ...@@ -4458,13 +4458,13 @@ emit_pattern_after_noloc (rtx x, rtx after, basic_block bb,
break; break;
} }
return last; return safe_as_a <rtx_insn *> (last);
} }
/* Make X be output after the insn AFTER and set the BB of insn. If /* Make X be output after the insn AFTER and set the BB of insn. If
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 rtx_insn *
emit_insn_after_noloc (rtx x, rtx after, basic_block bb) emit_insn_after_noloc (rtx x, rtx 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);
...@@ -4474,7 +4474,7 @@ emit_insn_after_noloc (rtx x, rtx after, basic_block bb) ...@@ -4474,7 +4474,7 @@ emit_insn_after_noloc (rtx x, rtx after, basic_block bb)
/* Make an insn of code JUMP_INSN with body X /* Make an insn of code JUMP_INSN with body X
and output it after the insn AFTER. */ and output it after the insn AFTER. */
rtx rtx_insn *
emit_jump_insn_after_noloc (rtx x, rtx after) emit_jump_insn_after_noloc (rtx x, rtx after)
{ {
return emit_pattern_after_noloc (x, after, NULL, make_jump_insn_raw); return emit_pattern_after_noloc (x, after, NULL, make_jump_insn_raw);
...@@ -4483,7 +4483,7 @@ emit_jump_insn_after_noloc (rtx x, rtx after) ...@@ -4483,7 +4483,7 @@ emit_jump_insn_after_noloc (rtx x, rtx after)
/* Make an instruction with body X and code CALL_INSN /* Make an instruction with body X and code CALL_INSN
and output it after the instruction AFTER. */ and output it after the instruction AFTER. */
rtx rtx_insn *
emit_call_insn_after_noloc (rtx x, rtx after) emit_call_insn_after_noloc (rtx x, rtx 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);
...@@ -4492,7 +4492,7 @@ emit_call_insn_after_noloc (rtx x, rtx after) ...@@ -4492,7 +4492,7 @@ emit_call_insn_after_noloc (rtx x, rtx after)
/* Make an instruction with body X and code CALL_INSN /* Make an instruction with body X and code CALL_INSN
and output it after the instruction AFTER. */ and output it after the instruction AFTER. */
rtx rtx_insn *
emit_debug_insn_after_noloc (rtx x, rtx after) emit_debug_insn_after_noloc (rtx x, rtx 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);
...@@ -4501,10 +4501,10 @@ emit_debug_insn_after_noloc (rtx x, rtx after) ...@@ -4501,10 +4501,10 @@ emit_debug_insn_after_noloc (rtx x, rtx after)
/* Make an insn of code BARRIER /* Make an insn of code BARRIER
and output it after the insn AFTER. */ and output it after the insn AFTER. */
rtx rtx_barrier *
emit_barrier_after (rtx after) emit_barrier_after (rtx after)
{ {
rtx insn = rtx_alloc (BARRIER); rtx_barrier *insn = as_a <rtx_barrier *> (rtx_alloc (BARRIER));
INSN_UID (insn) = cur_insn_uid++; INSN_UID (insn) = cur_insn_uid++;
...@@ -4514,13 +4514,13 @@ emit_barrier_after (rtx after) ...@@ -4514,13 +4514,13 @@ emit_barrier_after (rtx after)
/* Emit the label LABEL after the insn AFTER. */ /* Emit the label LABEL after the insn AFTER. */
rtx rtx_insn *
emit_label_after (rtx label, rtx after) emit_label_after (rtx label, rtx 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 label; return as_a <rtx_insn *> (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
...@@ -4590,14 +4590,14 @@ emit_note_before (enum insn_note subtype, rtx before) ...@@ -4590,14 +4590,14 @@ emit_note_before (enum insn_note subtype, rtx before)
/* Insert PATTERN after AFTER, setting its INSN_LOCATION to LOC. /* Insert PATTERN after AFTER, setting its INSN_LOCATION to LOC.
MAKE_RAW indicates how to turn PATTERN into a real insn. */ MAKE_RAW indicates how to turn PATTERN into a real insn. */
static rtx static rtx_insn *
emit_pattern_after_setloc (rtx pattern, rtx after, int loc, emit_pattern_after_setloc (rtx pattern, rtx after, int loc,
rtx_insn *(*make_raw) (rtx)) rtx_insn *(*make_raw) (rtx))
{ {
rtx last = emit_pattern_after_noloc (pattern, after, NULL, make_raw); rtx last = emit_pattern_after_noloc (pattern, after, NULL, make_raw);
if (pattern == NULL_RTX || !loc) if (pattern == NULL_RTX || !loc)
return last; return safe_as_a <rtx_insn *> (last);
after = NEXT_INSN (after); after = NEXT_INSN (after);
while (1) while (1)
...@@ -4608,14 +4608,14 @@ emit_pattern_after_setloc (rtx pattern, rtx after, int loc, ...@@ -4608,14 +4608,14 @@ emit_pattern_after_setloc (rtx pattern, rtx after, int loc,
break; break;
after = NEXT_INSN (after); after = NEXT_INSN (after);
} }
return last; return safe_as_a <rtx_insn *> (last);
} }
/* Insert PATTERN after AFTER. MAKE_RAW indicates how to turn PATTERN /* Insert PATTERN after AFTER. MAKE_RAW indicates how to turn PATTERN
into a real insn. SKIP_DEBUG_INSNS indicates whether to insert after into a real insn. SKIP_DEBUG_INSNS indicates whether to insert after
any DEBUG_INSNs. */ any DEBUG_INSNs. */
static rtx static rtx_insn *
emit_pattern_after (rtx pattern, rtx after, bool skip_debug_insns, emit_pattern_after (rtx pattern, rtx after, bool skip_debug_insns,
rtx_insn *(*make_raw) (rtx)) rtx_insn *(*make_raw) (rtx))
{ {
...@@ -4633,56 +4633,56 @@ emit_pattern_after (rtx pattern, rtx after, bool skip_debug_insns, ...@@ -4633,56 +4633,56 @@ emit_pattern_after (rtx pattern, rtx 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 rtx_insn *
emit_insn_after_setloc (rtx pattern, rtx after, int loc) emit_insn_after_setloc (rtx pattern, rtx after, int loc)
{ {
return emit_pattern_after_setloc (pattern, after, loc, make_insn_raw); return emit_pattern_after_setloc (pattern, after, loc, make_insn_raw);
} }
/* Like emit_insn_after_noloc, but set INSN_LOCATION according to AFTER. */ /* Like emit_insn_after_noloc, but set INSN_LOCATION according to AFTER. */
rtx rtx_insn *
emit_insn_after (rtx pattern, rtx after) emit_insn_after (rtx pattern, rtx after)
{ {
return emit_pattern_after (pattern, after, true, make_insn_raw); return emit_pattern_after (pattern, after, true, make_insn_raw);
} }
/* 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 rtx_insn *
emit_jump_insn_after_setloc (rtx pattern, rtx after, int loc) emit_jump_insn_after_setloc (rtx pattern, rtx after, int loc)
{ {
return emit_pattern_after_setloc (pattern, after, loc, make_jump_insn_raw); return emit_pattern_after_setloc (pattern, after, loc, make_jump_insn_raw);
} }
/* Like emit_jump_insn_after_noloc, but set INSN_LOCATION according to AFTER. */ /* Like emit_jump_insn_after_noloc, but set INSN_LOCATION according to AFTER. */
rtx rtx_insn *
emit_jump_insn_after (rtx pattern, rtx after) emit_jump_insn_after (rtx pattern, rtx after)
{ {
return emit_pattern_after (pattern, after, true, make_jump_insn_raw); return emit_pattern_after (pattern, after, true, make_jump_insn_raw);
} }
/* 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 rtx_insn *
emit_call_insn_after_setloc (rtx pattern, rtx after, int loc) emit_call_insn_after_setloc (rtx pattern, rtx after, int 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);
} }
/* Like emit_call_insn_after_noloc, but set INSN_LOCATION according to AFTER. */ /* Like emit_call_insn_after_noloc, but set INSN_LOCATION according to AFTER. */
rtx rtx_insn *
emit_call_insn_after (rtx pattern, rtx after) emit_call_insn_after (rtx pattern, rtx after)
{ {
return emit_pattern_after (pattern, after, true, make_call_insn_raw); return emit_pattern_after (pattern, after, true, make_call_insn_raw);
} }
/* 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 rtx_insn *
emit_debug_insn_after_setloc (rtx pattern, rtx after, int loc) emit_debug_insn_after_setloc (rtx pattern, rtx after, int 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);
} }
/* Like emit_debug_insn_after_noloc, but set INSN_LOCATION according to AFTER. */ /* Like emit_debug_insn_after_noloc, but set INSN_LOCATION according to AFTER. */
rtx rtx_insn *
emit_debug_insn_after (rtx pattern, rtx after) emit_debug_insn_after (rtx pattern, rtx after)
{ {
return emit_pattern_after (pattern, after, false, make_debug_insn_raw); return emit_pattern_after (pattern, after, false, make_debug_insn_raw);
...@@ -4693,7 +4693,7 @@ emit_debug_insn_after (rtx pattern, rtx after) ...@@ -4693,7 +4693,7 @@ emit_debug_insn_after (rtx pattern, rtx after)
indicates if PATTERN is meant for an INSN as opposed to a JUMP_INSN, indicates if PATTERN is meant for an INSN as opposed to a JUMP_INSN,
CALL_INSN, etc. */ CALL_INSN, etc. */
static rtx static rtx_insn *
emit_pattern_before_setloc (rtx pattern, rtx before, int loc, bool insnp, emit_pattern_before_setloc (rtx pattern, rtx before, int loc, bool insnp,
rtx_insn *(*make_raw) (rtx)) rtx_insn *(*make_raw) (rtx))
{ {
...@@ -4703,7 +4703,7 @@ emit_pattern_before_setloc (rtx pattern, rtx before, int loc, bool insnp, ...@@ -4703,7 +4703,7 @@ emit_pattern_before_setloc (rtx pattern, rtx before, int loc, bool insnp,
NULL, make_raw); NULL, make_raw);
if (pattern == NULL_RTX || !loc) if (pattern == NULL_RTX || !loc)
return last; return safe_as_a <rtx_insn *> (last);
if (!first) if (!first)
first = get_insns (); first = get_insns ();
...@@ -4717,7 +4717,7 @@ emit_pattern_before_setloc (rtx pattern, rtx before, int loc, bool insnp, ...@@ -4717,7 +4717,7 @@ emit_pattern_before_setloc (rtx pattern, rtx before, int loc, bool insnp,
break; break;
first = NEXT_INSN (first); first = NEXT_INSN (first);
} }
return last; return safe_as_a <rtx_insn *> (last);
} }
/* Insert PATTERN before BEFORE. MAKE_RAW indicates how to turn PATTERN /* Insert PATTERN before BEFORE. MAKE_RAW indicates how to turn PATTERN
...@@ -4725,7 +4725,7 @@ emit_pattern_before_setloc (rtx pattern, rtx before, int loc, bool insnp, ...@@ -4725,7 +4725,7 @@ emit_pattern_before_setloc (rtx pattern, rtx before, int loc, bool insnp,
before any DEBUG_INSNs. INSNP indicates if PATTERN is meant for an before any DEBUG_INSNs. INSNP indicates if PATTERN is meant for an
INSN as opposed to a JUMP_INSN, CALL_INSN, etc. */ INSN as opposed to a JUMP_INSN, CALL_INSN, etc. */
static rtx static rtx_insn *
emit_pattern_before (rtx pattern, rtx before, bool skip_debug_insns, emit_pattern_before (rtx pattern, rtx before, bool skip_debug_insns,
bool insnp, rtx_insn *(*make_raw) (rtx)) bool insnp, rtx_insn *(*make_raw) (rtx))
{ {
...@@ -4745,7 +4745,7 @@ emit_pattern_before (rtx pattern, rtx before, bool skip_debug_insns, ...@@ -4745,7 +4745,7 @@ emit_pattern_before (rtx pattern, rtx before, bool skip_debug_insns,
} }
/* 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 rtx_insn *
emit_insn_before_setloc (rtx pattern, rtx before, int loc) emit_insn_before_setloc (rtx pattern, rtx before, int loc)
{ {
return emit_pattern_before_setloc (pattern, before, loc, true, return emit_pattern_before_setloc (pattern, before, loc, true,
...@@ -4753,14 +4753,14 @@ emit_insn_before_setloc (rtx pattern, rtx before, int loc) ...@@ -4753,14 +4753,14 @@ emit_insn_before_setloc (rtx pattern, rtx before, int loc)
} }
/* Like emit_insn_before_noloc, but set INSN_LOCATION according to BEFORE. */ /* Like emit_insn_before_noloc, but set INSN_LOCATION according to BEFORE. */
rtx rtx_insn *
emit_insn_before (rtx pattern, rtx before) emit_insn_before (rtx pattern, rtx before)
{ {
return emit_pattern_before (pattern, before, true, true, make_insn_raw); return emit_pattern_before (pattern, before, true, true, make_insn_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 rtx_insn *
emit_jump_insn_before_setloc (rtx pattern, rtx before, int loc) emit_jump_insn_before_setloc (rtx pattern, rtx before, int loc)
{ {
return emit_pattern_before_setloc (pattern, before, loc, false, return emit_pattern_before_setloc (pattern, before, loc, false,
...@@ -4768,7 +4768,7 @@ emit_jump_insn_before_setloc (rtx pattern, rtx before, int loc) ...@@ -4768,7 +4768,7 @@ emit_jump_insn_before_setloc (rtx pattern, rtx before, int loc)
} }
/* Like emit_jump_insn_before_noloc, but set INSN_LOCATION according to BEFORE. */ /* Like emit_jump_insn_before_noloc, but set INSN_LOCATION according to BEFORE. */
rtx rtx_insn *
emit_jump_insn_before (rtx pattern, rtx before) emit_jump_insn_before (rtx pattern, rtx before)
{ {
return emit_pattern_before (pattern, before, true, false, return emit_pattern_before (pattern, before, true, false,
...@@ -4776,7 +4776,7 @@ emit_jump_insn_before (rtx pattern, rtx before) ...@@ -4776,7 +4776,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 rtx_insn *
emit_call_insn_before_setloc (rtx pattern, rtx before, int loc) emit_call_insn_before_setloc (rtx pattern, rtx before, int loc)
{ {
return emit_pattern_before_setloc (pattern, before, loc, false, return emit_pattern_before_setloc (pattern, before, loc, false,
...@@ -4785,7 +4785,7 @@ emit_call_insn_before_setloc (rtx pattern, rtx before, int loc) ...@@ -4785,7 +4785,7 @@ emit_call_insn_before_setloc (rtx pattern, rtx before, int loc)
/* Like emit_call_insn_before_noloc, /* Like emit_call_insn_before_noloc,
but set insn_location according to BEFORE. */ but set insn_location according to BEFORE. */
rtx rtx_insn *
emit_call_insn_before (rtx pattern, rtx before) emit_call_insn_before (rtx pattern, rtx before)
{ {
return emit_pattern_before (pattern, before, true, false, return emit_pattern_before (pattern, before, true, false,
...@@ -4793,7 +4793,7 @@ emit_call_insn_before (rtx pattern, rtx before) ...@@ -4793,7 +4793,7 @@ emit_call_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 rtx_insn *
emit_debug_insn_before_setloc (rtx pattern, rtx before, int loc) emit_debug_insn_before_setloc (rtx pattern, rtx before, int loc)
{ {
return emit_pattern_before_setloc (pattern, before, loc, false, return emit_pattern_before_setloc (pattern, before, loc, false,
...@@ -4802,7 +4802,7 @@ emit_debug_insn_before_setloc (rtx pattern, rtx before, int loc) ...@@ -4802,7 +4802,7 @@ emit_debug_insn_before_setloc (rtx pattern, rtx before, int loc)
/* Like emit_debug_insn_before_noloc, /* Like emit_debug_insn_before_noloc,
but set insn_location according to BEFORE. */ but set insn_location according to BEFORE. */
rtx rtx_insn *
emit_debug_insn_before (rtx pattern, rtx before) emit_debug_insn_before (rtx pattern, rtx before)
{ {
return emit_pattern_before (pattern, before, false, false, return emit_pattern_before (pattern, before, false, false,
...@@ -4814,11 +4814,11 @@ emit_debug_insn_before (rtx pattern, rtx before) ...@@ -4814,11 +4814,11 @@ emit_debug_insn_before (rtx pattern, rtx before)
Returns the last insn emitted. */ Returns the last insn emitted. */
rtx rtx_insn *
emit_insn (rtx x) emit_insn (rtx x)
{ {
rtx last = get_last_insn (); rtx_insn *last = get_last_insn ();
rtx insn; rtx_insn *insn;
if (x == NULL_RTX) if (x == NULL_RTX)
return last; return last;
...@@ -4832,10 +4832,10 @@ emit_insn (rtx x) ...@@ -4832,10 +4832,10 @@ emit_insn (rtx x)
case CODE_LABEL: case CODE_LABEL:
case BARRIER: case BARRIER:
case NOTE: case NOTE:
insn = x; insn = as_a <rtx_insn *> (x);
while (insn) while (insn)
{ {
rtx next = NEXT_INSN (insn); rtx_insn *next = NEXT_INSN (insn);
add_insn (insn); add_insn (insn);
last = insn; last = insn;
insn = next; insn = next;
...@@ -4861,11 +4861,11 @@ emit_insn (rtx x) ...@@ -4861,11 +4861,11 @@ emit_insn (rtx x)
/* Make an insn of code DEBUG_INSN with pattern X /* Make an insn of code DEBUG_INSN with pattern X
and add it to the end of the doubly-linked list. */ and add it to the end of the doubly-linked list. */
rtx rtx_insn *
emit_debug_insn (rtx x) emit_debug_insn (rtx x)
{ {
rtx last = get_last_insn (); rtx_insn *last = get_last_insn ();
rtx insn; rtx_insn *insn;
if (x == NULL_RTX) if (x == NULL_RTX)
return last; return last;
...@@ -4879,10 +4879,10 @@ emit_debug_insn (rtx x) ...@@ -4879,10 +4879,10 @@ emit_debug_insn (rtx x)
case CODE_LABEL: case CODE_LABEL:
case BARRIER: case BARRIER:
case NOTE: case NOTE:
insn = x; insn = as_a <rtx_insn *> (x);
while (insn) while (insn)
{ {
rtx next = NEXT_INSN (insn); rtx_insn *next = NEXT_INSN (insn);
add_insn (insn); add_insn (insn);
last = insn; last = insn;
insn = next; insn = next;
...@@ -4908,10 +4908,11 @@ emit_debug_insn (rtx x) ...@@ -4908,10 +4908,11 @@ emit_debug_insn (rtx x)
/* Make an insn of code JUMP_INSN with pattern X /* Make an insn of code JUMP_INSN with pattern X
and add it to the end of the doubly-linked list. */ and add it to the end of the doubly-linked list. */
rtx rtx_insn *
emit_jump_insn (rtx x) emit_jump_insn (rtx x)
{ {
rtx last = NULL_RTX, insn; rtx_insn *last = NULL;
rtx_insn *insn;
switch (GET_CODE (x)) switch (GET_CODE (x))
{ {
...@@ -4922,10 +4923,10 @@ emit_jump_insn (rtx x) ...@@ -4922,10 +4923,10 @@ emit_jump_insn (rtx x)
case CODE_LABEL: case CODE_LABEL:
case BARRIER: case BARRIER:
case NOTE: case NOTE:
insn = x; insn = as_a <rtx_insn *> (x);
while (insn) while (insn)
{ {
rtx next = NEXT_INSN (insn); rtx_insn *next = NEXT_INSN (insn);
add_insn (insn); add_insn (insn);
last = insn; last = insn;
insn = next; insn = next;
...@@ -4951,10 +4952,10 @@ emit_jump_insn (rtx x) ...@@ -4951,10 +4952,10 @@ emit_jump_insn (rtx x)
/* Make an insn of code CALL_INSN with pattern X /* Make an insn of code CALL_INSN with pattern X
and add it to the end of the doubly-linked list. */ and add it to the end of the doubly-linked list. */
rtx rtx_insn *
emit_call_insn (rtx x) emit_call_insn (rtx x)
{ {
rtx insn; rtx_insn *insn;
switch (GET_CODE (x)) switch (GET_CODE (x))
{ {
...@@ -4986,13 +4987,13 @@ emit_call_insn (rtx x) ...@@ -4986,13 +4987,13 @@ emit_call_insn (rtx x)
/* Add the label LABEL to the end of the doubly-linked list. */ /* Add the label LABEL to the end of the doubly-linked list. */
rtx rtx_insn *
emit_label (rtx label) emit_label (rtx label)
{ {
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 (label); add_insn (label);
return label; return as_a <rtx_insn *> (label);
} }
/* Make an insn of code JUMP_TABLE_DATA /* Make an insn of code JUMP_TABLE_DATA
...@@ -5013,10 +5014,10 @@ emit_jump_table_data (rtx table) ...@@ -5013,10 +5014,10 @@ emit_jump_table_data (rtx table)
/* Make an insn of code BARRIER /* Make an insn of code BARRIER
and add it to the end of the doubly-linked list. */ and add it to the end of the doubly-linked list. */
rtx rtx_barrier *
emit_barrier (void) emit_barrier (void)
{ {
rtx barrier = rtx_alloc (BARRIER); rtx_barrier *barrier = as_a <rtx_barrier *> (rtx_alloc (BARRIER));
INSN_UID (barrier) = cur_insn_uid++; INSN_UID (barrier) = cur_insn_uid++;
add_insn (barrier); add_insn (barrier);
return barrier; return barrier;
...@@ -5047,7 +5048,7 @@ emit_note (enum insn_note kind) ...@@ -5047,7 +5048,7 @@ emit_note (enum insn_note kind)
/* Emit a clobber of lvalue X. */ /* Emit a clobber of lvalue X. */
rtx rtx_insn *
emit_clobber (rtx x) emit_clobber (rtx x)
{ {
/* CONCATs should not appear in the insn stream. */ /* CONCATs should not appear in the insn stream. */
...@@ -5061,10 +5062,10 @@ emit_clobber (rtx x) ...@@ -5061,10 +5062,10 @@ emit_clobber (rtx x)
/* Return a sequence of insns to clobber lvalue X. */ /* Return a sequence of insns to clobber lvalue X. */
rtx rtx_insn *
gen_clobber (rtx x) gen_clobber (rtx x)
{ {
rtx seq; rtx_insn *seq;
start_sequence (); start_sequence ();
emit_clobber (x); emit_clobber (x);
...@@ -5075,7 +5076,7 @@ gen_clobber (rtx x) ...@@ -5075,7 +5076,7 @@ gen_clobber (rtx x)
/* Emit a use of rvalue X. */ /* Emit a use of rvalue X. */
rtx rtx_insn *
emit_use (rtx x) emit_use (rtx x)
{ {
/* CONCATs should not appear in the insn stream. */ /* CONCATs should not appear in the insn stream. */
...@@ -5089,10 +5090,10 @@ emit_use (rtx x) ...@@ -5089,10 +5090,10 @@ emit_use (rtx x)
/* Return a sequence of insns to use rvalue X. */ /* Return a sequence of insns to use rvalue X. */
rtx rtx_insn *
gen_use (rtx x) gen_use (rtx x)
{ {
rtx seq; rtx_insn *seq;
start_sequence (); start_sequence ();
emit_use (x); emit_use (x);
...@@ -5237,7 +5238,7 @@ classify_insn (rtx x) ...@@ -5237,7 +5238,7 @@ classify_insn (rtx x)
/* Emit the rtl pattern X as an appropriate kind of insn. /* Emit the rtl pattern X as an appropriate kind of insn.
If X is a label, it is simply added into the insn chain. */ If X is a label, it is simply added into the insn chain. */
rtx rtx_insn *
emit (rtx x) emit (rtx x)
{ {
enum rtx_code code = classify_insn (x); enum rtx_code code = classify_insn (x);
...@@ -5250,7 +5251,7 @@ emit (rtx x) ...@@ -5250,7 +5251,7 @@ emit (rtx x)
return emit_insn (x); return emit_insn (x);
case JUMP_INSN: case JUMP_INSN:
{ {
rtx insn = emit_jump_insn (x); rtx_insn *insn = emit_jump_insn (x);
if (any_uncondjump_p (insn) || GET_CODE (x) == RETURN) if (any_uncondjump_p (insn) || GET_CODE (x) == RETURN)
return emit_barrier (); return emit_barrier ();
return insn; return insn;
...@@ -6055,10 +6056,11 @@ init_emit_once (void) ...@@ -6055,10 +6056,11 @@ init_emit_once (void)
/* Produce exact duplicate of insn INSN after AFTER. /* Produce exact duplicate of insn INSN after AFTER.
Care updating of libcall regions if present. */ Care updating of libcall regions if present. */
rtx rtx_insn *
emit_copy_of_insn_after (rtx insn, rtx after) emit_copy_of_insn_after (rtx insn, rtx after)
{ {
rtx new_rtx, link; rtx_insn *new_rtx;
rtx link;
switch (GET_CODE (insn)) switch (GET_CODE (insn))
{ {
......
...@@ -66,7 +66,7 @@ extern rtx copy_insn_1 (rtx); ...@@ -66,7 +66,7 @@ extern rtx copy_insn_1 (rtx);
extern rtx copy_insn (rtx); extern rtx copy_insn (rtx);
extern rtx copy_delay_slot_insn (rtx); extern rtx copy_delay_slot_insn (rtx);
extern rtx gen_int_mode (HOST_WIDE_INT, enum machine_mode); extern rtx gen_int_mode (HOST_WIDE_INT, enum machine_mode);
extern rtx emit_copy_of_insn_after (rtx, rtx); extern rtx_insn *emit_copy_of_insn_after (rtx, rtx);
extern void set_reg_attrs_from_value (rtx, rtx); extern void set_reg_attrs_from_value (rtx, rtx);
extern void set_reg_attrs_for_parm (rtx, rtx); extern void set_reg_attrs_for_parm (rtx, rtx);
extern void set_reg_attrs_for_decl_rtl (tree t, rtx x); extern void set_reg_attrs_for_decl_rtl (tree t, rtx x);
......
...@@ -2379,49 +2379,49 @@ extern rtx assign_stack_temp_for_type (enum machine_mode, HOST_WIDE_INT, tree); ...@@ -2379,49 +2379,49 @@ extern rtx assign_stack_temp_for_type (enum machine_mode, HOST_WIDE_INT, tree);
extern rtx assign_temp (tree, int, int); extern rtx assign_temp (tree, int, int);
/* In emit-rtl.c */ /* In emit-rtl.c */
extern rtx emit_insn_before (rtx, rtx); extern rtx_insn *emit_insn_before (rtx, rtx);
extern rtx emit_insn_before_noloc (rtx, rtx, basic_block); extern rtx_insn *emit_insn_before_noloc (rtx, rtx, basic_block);
extern rtx emit_insn_before_setloc (rtx, rtx, int); extern rtx_insn *emit_insn_before_setloc (rtx, rtx, int);
extern rtx emit_jump_insn_before (rtx, rtx); extern rtx_insn *emit_jump_insn_before (rtx, rtx);
extern rtx emit_jump_insn_before_noloc (rtx, rtx); extern rtx_insn *emit_jump_insn_before_noloc (rtx, rtx);
extern rtx emit_jump_insn_before_setloc (rtx, rtx, int); extern rtx_insn *emit_jump_insn_before_setloc (rtx, rtx, int);
extern rtx emit_call_insn_before (rtx, rtx); extern rtx_insn *emit_call_insn_before (rtx, rtx);
extern rtx emit_call_insn_before_noloc (rtx, rtx); extern rtx_insn *emit_call_insn_before_noloc (rtx, rtx);
extern rtx emit_call_insn_before_setloc (rtx, rtx, int); extern rtx_insn *emit_call_insn_before_setloc (rtx, rtx, int);
extern rtx emit_debug_insn_before (rtx, rtx); extern rtx_insn *emit_debug_insn_before (rtx, rtx);
extern rtx emit_debug_insn_before_noloc (rtx, rtx); extern rtx_insn *emit_debug_insn_before_noloc (rtx, rtx);
extern rtx emit_debug_insn_before_setloc (rtx, rtx, int); extern rtx_insn *emit_debug_insn_before_setloc (rtx, rtx, int);
extern rtx emit_barrier_before (rtx); extern rtx_barrier *emit_barrier_before (rtx);
extern rtx emit_label_before (rtx, rtx); extern rtx_insn *emit_label_before (rtx, rtx);
extern rtx_note *emit_note_before (enum insn_note, rtx); extern rtx_note *emit_note_before (enum insn_note, rtx);
extern rtx emit_insn_after (rtx, rtx); extern rtx_insn *emit_insn_after (rtx, rtx);
extern rtx emit_insn_after_noloc (rtx, rtx, basic_block); extern rtx_insn *emit_insn_after_noloc (rtx, rtx, basic_block);
extern rtx emit_insn_after_setloc (rtx, rtx, int); extern rtx_insn *emit_insn_after_setloc (rtx, rtx, int);
extern rtx emit_jump_insn_after (rtx, rtx); extern rtx_insn *emit_jump_insn_after (rtx, rtx);
extern rtx emit_jump_insn_after_noloc (rtx, rtx); extern rtx_insn *emit_jump_insn_after_noloc (rtx, rtx);
extern rtx emit_jump_insn_after_setloc (rtx, rtx, int); extern rtx_insn *emit_jump_insn_after_setloc (rtx, rtx, int);
extern rtx emit_call_insn_after (rtx, rtx); extern rtx_insn *emit_call_insn_after (rtx, rtx);
extern rtx emit_call_insn_after_noloc (rtx, rtx); extern rtx_insn *emit_call_insn_after_noloc (rtx, rtx);
extern rtx emit_call_insn_after_setloc (rtx, rtx, int); extern rtx_insn *emit_call_insn_after_setloc (rtx, rtx, int);
extern rtx emit_debug_insn_after (rtx, rtx); extern rtx_insn *emit_debug_insn_after (rtx, rtx);
extern rtx emit_debug_insn_after_noloc (rtx, rtx); extern rtx_insn *emit_debug_insn_after_noloc (rtx, rtx);
extern rtx emit_debug_insn_after_setloc (rtx, rtx, int); extern rtx_insn *emit_debug_insn_after_setloc (rtx, rtx, int);
extern rtx emit_barrier_after (rtx); extern rtx_barrier *emit_barrier_after (rtx);
extern rtx emit_label_after (rtx, rtx); extern rtx_insn *emit_label_after (rtx, rtx);
extern rtx_note *emit_note_after (enum insn_note, rtx); extern rtx_note *emit_note_after (enum insn_note, rtx);
extern rtx emit_insn (rtx); extern rtx_insn *emit_insn (rtx);
extern rtx emit_debug_insn (rtx); extern rtx_insn *emit_debug_insn (rtx);
extern rtx emit_jump_insn (rtx); extern rtx_insn *emit_jump_insn (rtx);
extern rtx emit_call_insn (rtx); extern rtx_insn *emit_call_insn (rtx);
extern rtx emit_label (rtx); extern rtx_insn *emit_label (rtx);
extern rtx_jump_table_data *emit_jump_table_data (rtx); extern rtx_jump_table_data *emit_jump_table_data (rtx);
extern rtx emit_barrier (void); extern rtx_barrier *emit_barrier (void);
extern rtx_note *emit_note (enum insn_note); extern rtx_note *emit_note (enum insn_note);
extern rtx_note *emit_note_copy (rtx_note *); extern rtx_note *emit_note_copy (rtx_note *);
extern rtx gen_clobber (rtx); extern rtx_insn *gen_clobber (rtx);
extern rtx emit_clobber (rtx); extern rtx_insn *emit_clobber (rtx);
extern rtx gen_use (rtx); extern rtx_insn *gen_use (rtx);
extern rtx emit_use (rtx); extern rtx_insn *emit_use (rtx);
extern rtx_insn *make_insn_raw (rtx); extern rtx_insn *make_insn_raw (rtx);
extern void add_function_usage_to (rtx, rtx); extern void add_function_usage_to (rtx, rtx);
extern rtx_call_insn *last_call_insn (void); extern rtx_call_insn *last_call_insn (void);
...@@ -3094,7 +3094,7 @@ extern void add_insn (rtx); ...@@ -3094,7 +3094,7 @@ extern void add_insn (rtx);
extern void add_insn_before (rtx, rtx, basic_block); extern void add_insn_before (rtx, rtx, basic_block);
extern void add_insn_after (rtx, rtx, basic_block); extern void add_insn_after (rtx, rtx, basic_block);
extern void remove_insn (rtx); extern void remove_insn (rtx);
extern rtx emit (rtx); extern rtx_insn *emit (rtx);
extern void delete_insn (rtx); extern void delete_insn (rtx);
extern rtx_insn *entry_of_function (void); extern rtx_insn *entry_of_function (void);
extern void emit_insn_at_entry (rtx); extern void emit_insn_at_entry (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