@@ -959,9 +959,9 @@ assign_filter_values (void)
first instruction of some existing BB and return the newly
produced block. */
static basic_block
-emit_to_new_bb_before (rtx seq, rtx insn)
+emit_to_new_bb_before (rtx_insn *seq, rtx insn)
{
- rtx last;
+ rtx_insn *last;
basic_block bb;
edge e;
edge_iterator ei;
@@ -1030,7 +1030,7 @@ dw2_build_landing_pads (void)
for (i = 1; vec_safe_iterate (cfun->eh->lp_array, i, &lp); ++i)
{
basic_block bb;
- rtx seq;
+ rtx_insn *seq;
edge e;
if (lp == NULL || lp->post_landing_pad == NULL)
@@ -1119,7 +1119,8 @@ static void
sjlj_mark_call_sites (void)
{
int last_call_site = -2;
- rtx insn, mem;
+ rtx_insn *insn;
+ rtx mem;
for (insn = get_insns (); insn ; insn = NEXT_INSN (insn))
{
@@ -1127,7 +1128,7 @@ sjlj_mark_call_sites (void)
eh_region r;
bool nothrow;
int this_call_site;
- rtx before, p;
+ rtx_insn *before, *p;
/* Reset value tracking at extended basic block boundaries. */
if (LABEL_P (insn))
@@ -1180,9 +1181,10 @@ sjlj_mark_call_sites (void)
/* Construct the SjLj_Function_Context. */
static void
-sjlj_emit_function_enter (rtx dispatch_label)
+sjlj_emit_function_enter (rtx_code_label *dispatch_label)
{
- rtx fn_begin, fc, mem, seq;
+ rtx_insn *fn_begin, *seq;
+ rtx fc, mem;
bool fn_begin_outside_block;
rtx personality = get_personality_function (current_function_decl);
@@ -1260,7 +1262,7 @@ sjlj_emit_function_enter (rtx dispatch_label)
the call to unwind_sjlj_unregister_libfunc if needed. */
void
-sjlj_emit_function_exit_after (rtx after)
+sjlj_emit_function_exit_after (rtx_insn *after)
{
crtl->eh.sjlj_exit_after = after;
}
@@ -1268,7 +1270,7 @@ sjlj_emit_function_exit_after (rtx after)
static void
sjlj_emit_function_exit (void)
{
- rtx seq, insn;
+ rtx_insn *seq, *insn;
start_sequence ();
@@ -1295,7 +1297,8 @@ sjlj_emit_dispatch_table (rtx dispatch_label, int num_dispatch)
enum machine_mode unwind_word_mode = targetm.unwind_word_mode ();
enum machine_mode filter_mode = targetm.eh_return_filter_mode ();
eh_landing_pad lp;
- rtx mem, seq, fc, before, exc_ptr_reg, filter_reg;
+ rtx mem, fc, before, exc_ptr_reg, filter_reg;
+ rtx_insn *seq;
rtx first_reachable_label;
basic_block bb;
eh_region r;
@@ -1353,7 +1356,8 @@ sjlj_emit_dispatch_table (rtx dispatch_label, int num_dispatch)
for (i = 1; vec_safe_iterate (cfun->eh->lp_array, i, &lp); ++i)
if (lp && lp->post_landing_pad)
{
- rtx seq2, label;
+ rtx_insn *seq2;
+ rtx label;
start_sequence ();
@@ -1467,7 +1471,7 @@ sjlj_build_landing_pads (void)
num_dispatch = sjlj_assign_call_site_values ();
if (num_dispatch > 0)
{
- rtx dispatch_label = gen_label_rtx ();
+ rtx_code_label *dispatch_label = gen_label_rtx ();
int align = STACK_SLOT_ALIGNMENT (sjlj_fc_type_node,
TYPE_MODE (sjlj_fc_type_node),
TYPE_ALIGN (sjlj_fc_type_node));
@@ -1495,7 +1499,7 @@ sjlj_build_landing_pads (void)
align);
sjlj_mark_call_sites ();
- sjlj_emit_function_enter (NULL_RTX);
+ sjlj_emit_function_enter (NULL);
sjlj_emit_function_exit ();
}
@@ -1962,7 +1966,7 @@ can_nonlocal_goto (const_rtx insn)
static unsigned int
set_nothrow_function_flags (void)
{
- rtx insn;
+ rtx_insn *insn;
crtl->nothrow = 1;
@@ -2262,7 +2266,7 @@ expand_builtin_eh_return (tree stackadj_tree ATTRIBUTE_UNUSED,
void
expand_eh_return (void)
{
- rtx around_label;
+ rtx_code_label *around_label;
if (! crtl->eh.ehr_label)
return;
@@ -2479,18 +2483,19 @@ add_call_site (rtx landing_pad, int action, int section)
static unsigned int
convert_to_eh_region_ranges (void)
{
- rtx insn, iter;
+ rtx insn;
+ rtx_insn *iter;
rtx_note *note;
action_hash_type ar_hash;
int last_action = -3;
- rtx last_action_insn = NULL_RTX;
+ rtx_insn *last_action_insn = NULL;
rtx last_landing_pad = NULL_RTX;
- rtx first_no_action_insn = NULL_RTX;
+ rtx_insn *first_no_action_insn = NULL;
int call_site = 0;
int cur_sec = 0;
rtx section_switch_note = NULL_RTX;
- rtx first_no_action_insn_before_switch = NULL_RTX;
- rtx last_no_action_insn_before_switch = NULL_RTX;
+ rtx_insn *first_no_action_insn_before_switch = NULL;
+ rtx_insn *last_no_action_insn_before_switch = NULL;
int saved_call_site_base = call_site_base;
vec_alloc (crtl->eh.action_record_data, 64);
@@ -2559,8 +2564,8 @@ convert_to_eh_region_ranges (void)
gcc_assert (last_action != -3
|| (last_action_insn
== last_no_action_insn_before_switch));
- first_no_action_insn_before_switch = NULL_RTX;
- last_no_action_insn_before_switch = NULL_RTX;
+ first_no_action_insn_before_switch = NULL;
+ last_no_action_insn_before_switch = NULL;
call_site_base++;
}
/* If we'd not seen a previous action (-3) or the previous
@@ -2575,7 +2580,7 @@ convert_to_eh_region_ranges (void)
note = emit_note_before (NOTE_INSN_EH_REGION_BEG,
first_no_action_insn);
NOTE_EH_HANDLER (note) = call_site;
- first_no_action_insn = NULL_RTX;
+ first_no_action_insn = NULL;
}
note = emit_note_after (NOTE_INSN_EH_REGION_END,
@@ -2609,7 +2614,7 @@ convert_to_eh_region_ranges (void)
{
first_no_action_insn_before_switch = first_no_action_insn;
last_no_action_insn_before_switch = last_action_insn;
- first_no_action_insn = NULL_RTX;
+ first_no_action_insn = NULL;
gcc_assert (last_action == -1);
last_action = -3;
}
@@ -252,7 +252,7 @@ typedef tree (*duplicate_eh_regions_map) (tree, void *);
extern struct pointer_map_t *duplicate_eh_regions
(struct function *, eh_region, int, duplicate_eh_regions_map, void *);
-extern void sjlj_emit_function_exit_after (rtx);
+extern void sjlj_emit_function_exit_after (rtx_insn *);
extern eh_region gen_eh_region_cleanup (eh_region);
extern eh_region gen_eh_region_try (eh_region);
@@ -144,10 +144,10 @@ typedef struct call_site_record_d *call_site_record;
struct GTY(()) rtl_eh {
rtx ehr_stackadj;
rtx ehr_handler;
- rtx ehr_label;
+ rtx_code_label *ehr_label;
rtx sjlj_fc;
- rtx sjlj_exit_after;
+ rtx_insn *sjlj_exit_after;
vec<uchar, va_gc> *action_record_data;