try_split returns an rtx_insn
authorDavid Malcolm <dmalcolm@redhat.com>
Thu, 21 Aug 2014 08:53:25 +0000 (08:53 +0000)
committerDavid Malcolm <dmalcolm@gcc.gnu.org>
Thu, 21 Aug 2014 08:53:25 +0000 (08:53 +0000)
2014-08-21  David Malcolm  <dmalcolm@redhat.com>

* rtl.h (try_split): Strengthen return type from rtx to rtx_insn *.

* emit-rtl.c (try_split): Likewise, also for locals "before" and
"after".  For now, don't strengthen param "trial", which requires
adding checked casts when returning it.

From-SVN: r214260

gcc/ChangeLog
gcc/emit-rtl.c
gcc/rtl.h

index d7b5b1846a2a275bb69d86f6b4872b5fceefd005..518d86f3eab965d7ac0d752655038ffa4af318eb 100644 (file)
@@ -1,3 +1,11 @@
+2014-08-21  David Malcolm  <dmalcolm@redhat.com>
+
+       * rtl.h (try_split): Strengthen return type from rtx to rtx_insn *.
+
+       * emit-rtl.c (try_split): Likewise, also for locals "before" and
+       "after".  For now, don't strengthen param "trial", which requires
+       adding checked casts when returning it.
+
 2014-08-21  David Malcolm  <dmalcolm@redhat.com>
 
        * debug.h (struct gcc_debug_hooks): Strengthen param 1 of hook
index 0ca59adc4aeb47e13787686443bd8422cc4a6a3a..2d7d854095970052588a827f29c9bd72264479da 100644 (file)
@@ -3551,11 +3551,11 @@ mark_label_nuses (rtx x)
    replacement insn depending on the value of LAST.  Otherwise, it
    returns TRIAL.  If the insn to be returned can be split, it will be.  */
 
-rtx
+rtx_insn *
 try_split (rtx pat, rtx trial, int last)
 {
-  rtx before = PREV_INSN (trial);
-  rtx after = NEXT_INSN (trial);
+  rtx_insn *before = PREV_INSN (trial);
+  rtx_insn *after = NEXT_INSN (trial);
   int has_barrier = 0;
   rtx note, seq, tem;
   int probability;
@@ -3565,7 +3565,7 @@ try_split (rtx pat, rtx trial, int last)
 
   /* We're not good at redistributing frame information.  */
   if (RTX_FRAME_RELATED_P (trial))
-    return trial;
+    return as_a <rtx_insn *> (trial);
 
   if (any_condjump_p (trial)
       && (note = find_reg_note (trial, REG_BR_PROB, 0)))
@@ -3585,7 +3585,7 @@ try_split (rtx pat, rtx trial, int last)
     }
 
   if (!seq)
-    return trial;
+    return as_a <rtx_insn *> (trial);
 
   /* Avoid infinite loop if any insn of the result matches
      the original pattern.  */
@@ -3594,7 +3594,7 @@ try_split (rtx pat, rtx trial, int last)
     {
       if (INSN_P (insn_last)
          && rtx_equal_p (PATTERN (insn_last), pat))
-       return trial;
+       return as_a <rtx_insn *> (trial);
       if (!NEXT_INSN (insn_last))
        break;
       insn_last = NEXT_INSN (insn_last);
index 99d2d64190df238c99c6b5328d2c7a99e8803105..f9713f1fcbc1e2147b59d165862dfe844965a386 100644 (file)
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -2465,7 +2465,7 @@ extern rtx delete_related_insns (rtx);
 extern rtx *find_constant_term_loc (rtx *);
 
 /* In emit-rtl.c  */
-extern rtx try_split (rtx, rtx, int);
+extern rtx_insn *try_split (rtx, rtx, int);
 extern int split_branch_probability;
 
 /* In unknown file  */