From: David Malcolm Date: Wed, 13 Jun 2018 13:43:32 +0000 (+0000) Subject: emit-rtl.c: more typesafety X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=4dea3bff792b49a1eb72ee9ef15d7961fa9150c8;p=gcc.git 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 casts to the loops over LABEL_REFS. (fixup_addr_diff_vecs): Add as_a 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fc462248e78..5b15216cdd5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,85 @@ +2018-06-13 David Malcolm + + * 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 casts to + the loops over LABEL_REFS. + (fixup_addr_diff_vecs): Add as_a 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 * cgraph.c (cgraph_node::get_untransformed_body): Dump function diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c index 85f473ab195..477500cd0b2 100644 --- a/gcc/config/arc/arc.c +++ b/gcc/config/arc/arc.c @@ -7306,8 +7306,8 @@ hwloop_optimize (hwloop_info loop) int i; edge entry_edge; basic_block entry_bb, bb; - rtx iter_reg, end_label; - rtx_insn *insn, *seq, *entry_after, *last_insn; + rtx iter_reg; + rtx_insn *insn, *seq, *entry_after, *last_insn, *end_label; unsigned int length; bool need_fix = false; rtx lp_reg = gen_rtx_REG (SImode, LP_COUNT); diff --git a/gcc/config/bfin/bfin.c b/gcc/config/bfin/bfin.c index b656f13d315..1d98e55c84d 100644 --- a/gcc/config/bfin/bfin.c +++ b/gcc/config/bfin/bfin.c @@ -3773,7 +3773,7 @@ hwloop_optimize (hwloop_info loop) point. */ 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 only one cheap instruction before the end (typically an increment of an induction variable), we can just emit a copy here instead of a @@ -4607,7 +4607,7 @@ add_sched_insns_for_speculation (void) && any_condjump_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); if (GET_CODE (PATTERN (next)) == UNSPEC_VOLATILE diff --git a/gcc/config/c6x/c6x.c b/gcc/config/c6x/c6x.c index f12edfd0821..38fbd7e3fa9 100644 --- a/gcc/config/c6x/c6x.c +++ b/gcc/config/c6x/c6x.c @@ -4835,7 +4835,7 @@ find_last_same_clock (rtx_insn *insn) the SEQUENCEs that represent execute packets. */ static void -reorg_split_calls (rtx_insn **call_labels) +reorg_split_calls (rtx_code_label **call_labels) { unsigned int reservation_mask = 0; rtx_insn *insn = get_insns (); @@ -5009,7 +5009,7 @@ reorg_split_calls (rtx_insn **call_labels) scheduling was run earlier. */ static void -reorg_emit_nops (rtx_insn **call_labels) +reorg_emit_nops (rtx_code_label **call_labels) { bool first; rtx last_call; @@ -5947,7 +5947,7 @@ c6x_reorg (void) } 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); diff --git a/gcc/config/sh/sh-protos.h b/gcc/config/sh/sh-protos.h index 23405b4dde2..66ee3159d55 100644 --- a/gcc/config/sh/sh-protos.h +++ b/gcc/config/sh/sh-protos.h @@ -88,7 +88,7 @@ extern int shl_sext_length (rtx); extern bool gen_shl_sext (rtx, rtx, rtx, rtx); extern int regs_used (rtx, int); 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 enum tls_model tls_symbolic_operand (rtx, machine_mode); extern bool system_reg_operand (rtx, machine_mode); diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index ced66408265..5f6fbb37e3e 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -4583,7 +4583,7 @@ dump_table (rtx_insn *start, rtx_insn *barrier) { rtx_insn *scan = barrier; bool need_align = true; - rtx lab; + rtx_code_label *lab; label_ref_list_t ref; bool have_df = false; @@ -4600,7 +4600,8 @@ dump_table (rtx_insn *start, rtx_insn *barrier) scan = emit_insn_after (gen_align_2 (), scan); need_align = false; } - for (lab = p->label; lab; lab = LABEL_REFS (lab)) + for (lab = p->label; lab; + lab = safe_as_a (LABEL_REFS (lab))) scan = emit_label_after (lab, scan); scan = emit_insn_after (gen_consttable_2 (p->value, const0_rtx), scan); @@ -4627,7 +4628,7 @@ dump_table (rtx_insn *start, rtx_insn *barrier) rtx src = SET_SRC (XVECEXP (PATTERN (start), 0, 0)); rtx lab = XEXP (XVECEXP (src, 0, 3), 0); - scan = emit_label_after (lab, scan); + scan = emit_label_after (as_a (lab), scan); } } if (TARGET_FMOVD && TARGET_ALIGN_DOUBLE && have_df) @@ -4650,7 +4651,8 @@ dump_table (rtx_insn *start, rtx_insn *barrier) case E_SFmode: 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 (LABEL_REFS (lab))) emit_label_before (lab, align_insn); emit_insn_before (gen_consttable_4 (p->value, const0_rtx), align_insn); @@ -4666,7 +4668,8 @@ dump_table (rtx_insn *start, rtx_insn *barrier) } else { - for (lab = p->label; lab; lab = LABEL_REFS (lab)) + for (lab = p->label; lab; + lab = safe_as_a (LABEL_REFS (lab))) scan = emit_label_after (lab, scan); scan = emit_insn_after (gen_consttable_4 (p->value, const0_rtx), scan); @@ -4682,7 +4685,8 @@ dump_table (rtx_insn *start, rtx_insn *barrier) } /* FALLTHRU */ case E_DImode: - for (lab = p->label; lab; lab = LABEL_REFS (lab)) + for (lab = p->label; lab; + lab = safe_as_a (LABEL_REFS (lab))) scan = emit_label_after (lab, scan); scan = emit_insn_after (gen_consttable_8 (p->value, const0_rtx), scan); @@ -4721,7 +4725,8 @@ dump_table (rtx_insn *start, rtx_insn *barrier) scan = emit_label_after (gen_label_rtx (), 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 (LABEL_REFS (lab))) scan = emit_label_after (lab, scan); scan = emit_insn_after (gen_consttable_4 (p->value, const0_rtx), scan); @@ -4734,7 +4739,8 @@ dump_table (rtx_insn *start, rtx_insn *barrier) scan = emit_label_after (gen_label_rtx (), 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 (LABEL_REFS (lab))) scan = emit_label_after (lab, scan); scan = emit_insn_after (gen_consttable_8 (p->value, const0_rtx), scan); @@ -5706,7 +5712,7 @@ fixup_addr_diff_vecs (rtx_insn *first) /* Emit the reference label of the braf where it belongs, right after the casesi_jump_2 (i.e. braf). */ braf_label = XEXP (XEXP (SET_SRC (XVECEXP (prevpat, 0, 0)), 1), 0); - emit_label_after (braf_label, prev); + emit_label_after (as_a (braf_label), prev); /* Fix up the ADDR_DIF_VEC to be relative to the reference address of the braf. */ @@ -5810,7 +5816,7 @@ barrier_align (rtx_insn *barrier_or_label) { rtx_insn *x; 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 with some previous instruction, it will have redirected PREV's jump to the following insn. */ @@ -6310,7 +6316,7 @@ sh_reorg (void) /* Return the UID of the insn that follows the specified label. */ 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); @@ -6370,7 +6376,7 @@ split_branches (rtx_insn *first) if (get_attr_length (insn) > 4) { rtx src = SET_SRC (PATTERN (insn)); - rtx olabel = XEXP (XEXP (src, 1), 0); + rtx_insn *olabel = safe_as_a (XEXP (XEXP (src, 1), 0)); int addr = INSN_ADDRESSES (INSN_UID (insn)); rtx_insn *label = 0; int dest_uid = get_dest_uid (olabel, max_uid); diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 613030fa814..a327ff2da08 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -3602,10 +3602,8 @@ prev_nonnote_nondebug_insn_bb (rtx_insn *insn) SEQUENCEs. */ rtx_insn * -next_real_insn (rtx uncast_insn) +next_real_insn (rtx_insn *insn) { - rtx_insn *insn = safe_as_a (uncast_insn); - while (insn) { insn = NEXT_INSN (insn); @@ -4230,10 +4228,8 @@ add_insn_before_nobb (rtx_insn *insn, rtx_insn *before) they know how to update a SEQUENCE. */ 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 (uncast_insn); - rtx_insn *after = as_a (uncast_after); add_insn_after_nobb (insn, after); if (!BARRIER_P (after) && !BARRIER_P (insn) @@ -4260,10 +4256,8 @@ add_insn_after (rtx uncast_insn, rtx uncast_after, basic_block bb) they know how to update a SEQUENCE. */ 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 (uncast_insn); - rtx_insn *before = as_a (uncast_before); add_insn_before_nobb (insn, before); if (!bb @@ -4313,9 +4307,8 @@ set_insn_deleted (rtx insn) To really delete an insn and related DF information, use delete_insn. */ void -remove_insn (rtx uncast_insn) +remove_insn (rtx_insn *insn) { - rtx_insn *insn = as_a (uncast_insn); rtx_insn *next = NEXT_INSN (insn); rtx_insn *prev = PREV_INSN (insn); basic_block bb; @@ -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. */ 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 *insn; @@ -4526,7 +4520,7 @@ emit_pattern_before_noloc (rtx x, rtx before, rtx last, basic_block bb, gcc_assert (before); if (x == NULL_RTX) - return safe_as_a (last); + return last; switch (GET_CODE (x)) { @@ -4559,7 +4553,7 @@ emit_pattern_before_noloc (rtx x, rtx before, rtx last, basic_block bb, break; } - return safe_as_a (last); + return last; } /* Make X be output before the instruction BEFORE. */ @@ -4577,7 +4571,7 @@ rtx_jump_insn * emit_jump_insn_before_noloc (rtx x, rtx_insn *before) { return as_a ( - emit_pattern_before_noloc (x, before, NULL_RTX, NULL, + emit_pattern_before_noloc (x, before, NULL, NULL, make_jump_insn_raw)); } @@ -4587,7 +4581,7 @@ emit_jump_insn_before_noloc (rtx x, rtx_insn *before) rtx_insn * 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); } @@ -4595,9 +4589,9 @@ emit_call_insn_before_noloc (rtx x, rtx_insn *before) and output it before the instruction BEFORE. */ 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); } @@ -4605,7 +4599,7 @@ emit_debug_insn_before_noloc (rtx x, rtx before) and output it before the insn BEFORE. */ rtx_barrier * -emit_barrier_before (rtx before) +emit_barrier_before (rtx_insn *before) { rtx_barrier *insn = as_a (rtx_alloc (BARRIER)); @@ -4618,21 +4612,20 @@ emit_barrier_before (rtx before) /* Emit the label LABEL before the insn BEFORE. */ 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); INSN_UID (label) = cur_insn_uid++; add_insn_before (label, before, NULL); - return as_a (label); + return label; } /* Helper for emit_insn_after, handles lists of instructions efficiently. */ 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 (uncast_after); rtx_insn *last; rtx_insn *after_after; if (!bb && !BARRIER_P (after)) @@ -4674,10 +4667,9 @@ emit_insn_after_1 (rtx_insn *first, rtx uncast_after, basic_block bb) } 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 *after = safe_as_a (uncast_after); rtx_insn *last = after; gcc_assert (after); @@ -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. */ 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); } @@ -4726,7 +4718,7 @@ emit_insn_after_noloc (rtx x, rtx after, basic_block bb) and output it after the insn AFTER. */ 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 ( emit_pattern_after_noloc (x, after, NULL, make_jump_insn_raw)); @@ -4736,7 +4728,7 @@ emit_jump_insn_after_noloc (rtx x, rtx after) and output it after the instruction AFTER. */ 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); } @@ -4745,7 +4737,7 @@ emit_call_insn_after_noloc (rtx x, rtx after) and output it after the instruction AFTER. */ 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); } @@ -4754,7 +4746,7 @@ emit_debug_insn_after_noloc (rtx x, rtx after) and output it after the insn AFTER. */ rtx_barrier * -emit_barrier_after (rtx after) +emit_barrier_after (rtx_insn *after) { rtx_barrier *insn = as_a (rtx_alloc (BARRIER)); @@ -4767,12 +4759,12 @@ emit_barrier_after (rtx after) /* Emit the label LABEL after the insn AFTER. */ 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); INSN_UID (label) = cur_insn_uid++; add_insn_after (label, after, NULL); - return as_a (label); + return label; } /* 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) MAKE_RAW indicates how to turn PATTERN into a real 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 *after = safe_as_a (uncast_after); rtx_insn *last = emit_pattern_after_noloc (pattern, after, NULL, make_raw); if (pattern == NULL_RTX || !loc) @@ -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. */ 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); } @@ -4903,7 +4894,7 @@ emit_insn_after (rtx pattern, rtx after) /* Like emit_jump_insn_after_noloc, but set INSN_LOCATION according to LOC. */ 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 ( emit_pattern_after_setloc (pattern, after, loc, make_jump_insn_raw)); @@ -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. */ 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); } @@ -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. */ 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); } @@ -4951,13 +4942,12 @@ emit_debug_insn_after (rtx pattern, rtx after) CALL_INSN, etc. */ static rtx_insn * -emit_pattern_before_setloc (rtx pattern, rtx uncast_before, int loc, bool insnp, - rtx_insn *(*make_raw) (rtx)) +emit_pattern_before_setloc (rtx pattern, rtx_insn *before, location_t loc, + bool insnp, rtx_insn *(*make_raw) (rtx)) { - rtx_insn *before = as_a (uncast_before); rtx_insn *first = PREV_INSN (before); rtx_insn *last = emit_pattern_before_noloc (pattern, before, - insnp ? before : NULL_RTX, + insnp ? before : NULL, NULL, make_raw); if (pattern == NULL_RTX || !loc) @@ -5001,13 +4991,13 @@ emit_pattern_before (rtx pattern, rtx uncast_before, bool skip_debug_insns, insnp, make_raw); else return emit_pattern_before_noloc (pattern, before, - insnp ? before : NULL_RTX, + insnp ? before : NULL, NULL, make_raw); } /* Like emit_insn_before_noloc, but set INSN_LOCATION according to LOC. */ 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, make_insn_raw); @@ -5022,7 +5012,7 @@ emit_insn_before (rtx pattern, rtx before) /* like emit_insn_before_noloc, but set INSN_LOCATION according to LOC. */ 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 ( emit_pattern_before_setloc (pattern, before, loc, false, @@ -5040,7 +5030,7 @@ emit_jump_insn_before (rtx pattern, rtx before) /* Like emit_insn_before_noloc, but set INSN_LOCATION according to LOC. */ 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, make_call_insn_raw); @@ -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. */ 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, make_debug_insn_raw); diff --git a/gcc/rtl.h b/gcc/rtl.h index bd610e28f43..5ae58b432ed 100644 --- a/gcc/rtl.h +++ b/gcc/rtl.h @@ -3216,33 +3216,34 @@ extern void decide_function_section (tree); /* In emit-rtl.c */ 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_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_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_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_noloc (rtx, rtx); -extern rtx_insn *emit_debug_insn_before_setloc (rtx, rtx, int); -extern rtx_barrier *emit_barrier_before (rtx); -extern rtx_code_label *emit_label_before (rtx, rtx_insn *); +extern rtx_insn *emit_debug_insn_before_setloc (rtx, rtx_insn *, location_t); +extern rtx_barrier *emit_barrier_before (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_insn *emit_insn_after (rtx, rtx); -extern rtx_insn *emit_insn_after_noloc (rtx, rtx, basic_block); -extern rtx_insn *emit_insn_after_setloc (rtx, rtx, int); +extern rtx_insn *emit_insn_after_noloc (rtx, rtx_insn *, basic_block); +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_noloc (rtx, rtx); -extern rtx_jump_insn *emit_jump_insn_after_setloc (rtx, rtx, int); +extern rtx_jump_insn *emit_jump_insn_after_noloc (rtx, rtx_insn *); +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_noloc (rtx, rtx); -extern rtx_insn *emit_call_insn_after_setloc (rtx, rtx, int); +extern rtx_insn *emit_call_insn_after_noloc (rtx, rtx_insn *); +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_noloc (rtx, rtx); -extern rtx_insn *emit_debug_insn_after_setloc (rtx, rtx, int); -extern rtx_barrier *emit_barrier_after (rtx); -extern rtx_insn *emit_label_after (rtx, rtx_insn *); +extern rtx_insn *emit_debug_insn_after_noloc (rtx, rtx_insn *); +extern rtx_insn *emit_debug_insn_after_setloc (rtx, rtx_insn *, location_t); +extern rtx_barrier *emit_barrier_after (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_insn *emit_insn (rtx); extern rtx_insn *emit_debug_insn (rtx); @@ -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_bb (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 *next_real_nondebug_insn (rtx); extern rtx_insn *prev_active_insn (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 verify_rtl_sharing (void); extern void add_insn (rtx_insn *); -extern void add_insn_before (rtx, rtx, basic_block); -extern void add_insn_after (rtx, rtx, basic_block); -extern void remove_insn (rtx); +extern void add_insn_before (rtx_insn *, rtx_insn *, basic_block); +extern void add_insn_after (rtx_insn *, rtx_insn *, basic_block); +extern void remove_insn (rtx_insn *); extern rtx_insn *emit (rtx, bool = true); extern void emit_insn_at_entry (rtx); extern rtx gen_lowpart_SUBREG (machine_mode, rtx);