Drop uncast_insn from param 1 of final_scan_insn
authorDavid Malcolm <dmalcolm@redhat.com>
Fri, 5 Sep 2014 14:04:46 +0000 (14:04 +0000)
committerDavid Malcolm <dmalcolm@gcc.gnu.org>
Fri, 5 Sep 2014 14:04:46 +0000 (14:04 +0000)
gcc/ChangeLog
2014-09-05  David Malcolm  <dmalcolm@redhat.com>

* 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

gcc/ChangeLog
gcc/config/h8300/h8300.md
gcc/config/mips/mips.c
gcc/config/sh/sh.c
gcc/final.c
gcc/output.h

index 8c355dca714dea30a6f42aa1186517fcb3d83826..4a07b3c2a7255cc2847109e6833a4fab47fae2ca 100644 (file)
@@ -1,3 +1,21 @@
+2014-09-05  David Malcolm  <dmalcolm@redhat.com>
+
+       * 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  <dmalcolm@redhat.com>
 
        * jump.c (delete_related_insns): Introduce a new local "table" by
index bc592dcfaf31aa463a3b25c5322807c54c0f64a5..cb10203f16179001641e015144dcf7a258af4af7 100644 (file)
             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 "";
        }
     }
index 3e7749180c14c4d09318768a788bda291a8a387e..f9713c17914a93e58b35127b6a23ee9ac2cd990c 100644 (file)
@@ -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);
index 849867a78b6a47a7d2418df438b48ddc67c8fc9b..3b4acb97dafccd9524dc09afee0ee6eebd128287 100644 (file)
@@ -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 *
index 6469f408b44c5b72ed39111e03e08f7e59e2e423..81c750d0b6e103144ef6e250044aa63e557740de 100644 (file)
@@ -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 <rtx_insn *> (uncast_insn);
-
   insn_counter++;
 
   /* Ignore deleted insns.  These can occur when we split insns (due to a
index a2ac1ec8bce7dce51498a224eeb5df0dbf5d095c..fd36f8b19895a67222e375a7381813f8b76cfbde 100644 (file)
@@ -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.  */