From: David Malcolm Date: Fri, 5 Sep 2014 14:04:46 +0000 (+0000) Subject: Drop uncast_insn from param 1 of final_scan_insn X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7fa55ff675da902516b0e0624e8436b823122963;p=gcc.git Drop uncast_insn from param 1 of final_scan_insn gcc/ChangeLog 2014-09-05 David Malcolm * output.h (final_scan_insn): Strengthen first param from rtx to rtx_insn *. * final.c (final_scan_insn): Likewise, renaming it back from "uncast_insn" to "insn", eliminating the checked cast. * config/h8300/h8300.md (define_insn "jump"): Replace local rtx "vec" with an rtx_sequence * "seq", taking a copy of "final_sequence", and using methods of "seq" for clarity, and for type-safety in the calls to final_scan_insn. * config/mips/mips.c (mips_output_conditional_branch): Use methods of "final_sequence" for clarity, and for type-safety in the call to final_scan_insn. * config/sh/sh.c (print_slot): Strengthen param from rtx to rtx_sequence * and rename from "insn" to "seq". From-SVN: r214961 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8c355dca714..4a07b3c2a72 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,21 @@ +2014-09-05 David Malcolm + + * output.h (final_scan_insn): Strengthen first param from rtx to + rtx_insn *. + + * final.c (final_scan_insn): Likewise, renaming it back from + "uncast_insn" to "insn", eliminating the checked cast. + + * config/h8300/h8300.md (define_insn "jump"): Replace local rtx + "vec" with an rtx_sequence * "seq", taking a copy of + "final_sequence", and using methods of "seq" for clarity, and for + type-safety in the calls to final_scan_insn. + * config/mips/mips.c (mips_output_conditional_branch): Use methods + of "final_sequence" for clarity, and for type-safety in the call to + final_scan_insn. + * config/sh/sh.c (print_slot): Strengthen param from rtx to + rtx_sequence * and rename from "insn" to "seq". + 2014-09-05 David Malcolm * jump.c (delete_related_insns): Introduce a new local "table" by diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md index bc592dcfaf3..cb10203f161 100644 --- a/gcc/config/h8300/h8300.md +++ b/gcc/config/h8300/h8300.md @@ -2404,14 +2404,14 @@ bytes further than previously thought. The length-based test for bra vs. jump is very conservative though, so the branch will still be within range. */ - rtvec vec; + rtx_sequence *seq; int seen; - vec = XVEC (final_sequence, 0); + seq = final_sequence; final_sequence = 0; - final_scan_insn (RTVEC_ELT (vec, 1), asm_out_file, optimize, 1, & seen); - final_scan_insn (RTVEC_ELT (vec, 0), asm_out_file, optimize, 1, & seen); - INSN_DELETED_P (RTVEC_ELT (vec, 1)) = 1; + final_scan_insn (seq->insn (1), asm_out_file, optimize, 1, & seen); + final_scan_insn (seq->insn (0), asm_out_file, optimize, 1, & seen); + INSN_DELETED_P (seq->insn (1)) = 1; return ""; } } diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 3e7749180c1..f9713c17914 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -12496,9 +12496,9 @@ mips_output_conditional_branch (rtx_insn *insn, rtx *operands, delay slot if is not annulled. */ if (!INSN_ANNULLED_BRANCH_P (insn)) { - final_scan_insn (XVECEXP (final_sequence, 0, 1), + final_scan_insn (final_sequence->insn (1), asm_out_file, optimize, 1, NULL); - INSN_DELETED_P (XVECEXP (final_sequence, 0, 1)) = 1; + INSN_DELETED_P (final_sequence->insn (1)) = 1; } else output_asm_insn ("nop", 0); @@ -12521,9 +12521,9 @@ mips_output_conditional_branch (rtx_insn *insn, rtx *operands, Use INSN's delay slot if is annulled. */ if (INSN_ANNULLED_BRANCH_P (insn)) { - final_scan_insn (XVECEXP (final_sequence, 0, 1), + final_scan_insn (final_sequence->insn (1), asm_out_file, optimize, 1, NULL); - INSN_DELETED_P (XVECEXP (final_sequence, 0, 1)) = 1; + INSN_DELETED_P (final_sequence->insn (1)) = 1; } else output_asm_insn ("nop", 0); diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index 849867a78b6..3b4acb97daf 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -184,7 +184,7 @@ static bool shmedia_space_reserved_for_target_registers; static void split_branches (rtx_insn *); static int branch_dest (rtx); -static void print_slot (rtx); +static void print_slot (rtx_sequence *); static rtx_code_label *add_constant (rtx, enum machine_mode, rtx); static void dump_table (rtx_insn *, rtx_insn *); static bool broken_move (rtx_insn *); @@ -2641,11 +2641,11 @@ output_movedouble (rtx insn ATTRIBUTE_UNUSED, rtx operands[], another instruction, but couldn't because the other instruction expanded into a sequence where putting the slot insn at the end wouldn't work. */ static void -print_slot (rtx insn) +print_slot (rtx_sequence *seq) { - final_scan_insn (XVECEXP (insn, 0, 1), asm_out_file, optimize, 1, NULL); + final_scan_insn (seq->insn (1), asm_out_file, optimize, 1, NULL); - INSN_DELETED_P (XVECEXP (insn, 0, 1)) = 1; + INSN_DELETED_P (seq->insn (1)) = 1; } const char * diff --git a/gcc/final.c b/gcc/final.c index 6469f408b44..81c750d0b6e 100644 --- a/gcc/final.c +++ b/gcc/final.c @@ -2171,7 +2171,7 @@ call_from_call_insn (rtx_call_insn *insn) both NOTE_INSN_PROLOGUE_END and NOTE_INSN_FUNCTION_BEG. */ rtx_insn * -final_scan_insn (rtx uncast_insn, FILE *file, int optimize_p ATTRIBUTE_UNUSED, +final_scan_insn (rtx_insn *insn, FILE *file, int optimize_p ATTRIBUTE_UNUSED, int nopeepholes ATTRIBUTE_UNUSED, int *seen) { #ifdef HAVE_cc0 @@ -2179,8 +2179,6 @@ final_scan_insn (rtx uncast_insn, FILE *file, int optimize_p ATTRIBUTE_UNUSED, #endif rtx_insn *next; - rtx_insn *insn = as_a (uncast_insn); - insn_counter++; /* Ignore deleted insns. These can occur when we split insns (due to a diff --git a/gcc/output.h b/gcc/output.h index a2ac1ec8bce..fd36f8b1989 100644 --- a/gcc/output.h +++ b/gcc/output.h @@ -72,7 +72,7 @@ extern void final (rtx_insn *, FILE *, int); /* The final scan for one insn, INSN. Args are same as in `final', except that INSN is the insn being scanned. Value returned is the next insn to be scanned. */ -extern rtx_insn *final_scan_insn (rtx, FILE *, int, int, int *); +extern rtx_insn *final_scan_insn (rtx_insn *, FILE *, int, int, int *); /* Replace a SUBREG with a REG or a MEM, based on the thing it is a subreg of. */