reorg.c (make_return_insns): Use emit_copy_of_insn_after for the insns in the delay...
authorEric Botcazou <ebotcazou@adacore.com>
Tue, 2 Oct 2018 10:20:08 +0000 (10:20 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Tue, 2 Oct 2018 10:20:08 +0000 (10:20 +0000)
* reorg.c (make_return_insns): Use emit_copy_of_insn_after for the
insns in the delay slot and add_insn_after for the jump insn.

From-SVN: r264780

gcc/ChangeLog
gcc/reorg.c

index 025f809eb600f35d4259732260893146c1c2b210..25026fce591572f979426ddf5f5a81a29478839f 100644 (file)
@@ -1,3 +1,8 @@
+2018-10-02  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * reorg.c (make_return_insns): Use emit_copy_of_insn_after for the
+       insns in the delay slot and add_insn_after for the jump insn.
+
 2018-10-02  Richard Biener  <rguenther@suse.de>
 
        * tree-inline.c (expand_call_inline): Use the location of
index f8a986cea1de6cb8142dc5e3c58d2e87af002a42..2f0ed547d2733154f4f7fe8d3c3be9cb142e40e3 100644 (file)
@@ -3638,18 +3638,13 @@ make_return_insns (rtx_insn *first)
         insns for its delay slots, if it needs some.  */
       if (ANY_RETURN_P (PATTERN (jump_insn)))
        {
-         rtx_insn *prev = PREV_INSN (insn);
+         rtx_insn *after = PREV_INSN (insn);
 
          delete_related_insns (insn);
-         for (i = 1; i < XVECLEN (pat, 0); i++)
-           {
-             rtx_insn *in_seq_insn = as_a<rtx_insn *> (XVECEXP (pat, 0, i));
-             prev = emit_insn_after_setloc (PATTERN (in_seq_insn), prev,
-                                            INSN_LOCATION (in_seq_insn));
-           }
-
-         insn = emit_jump_insn_after_setloc (PATTERN (jump_insn), prev,
-                                             INSN_LOCATION (jump_insn));
+         insn = jump_insn;
+         for (i = 1; i < pat->len (); i++)
+           after = emit_copy_of_insn_after (pat->insn (i), after);
+         add_insn_after (insn, after, NULL);
          emit_barrier_after (insn);
 
          if (slots)