iq2000.c (final_prescan_insn): Do not separate a CALL and NOTE_INSN_CALL_ARG_LOCATION.
authorJeff Law <law@redhat.com>
Fri, 7 Apr 2017 14:26:05 +0000 (08:26 -0600)
committerJeff Law <law@gcc.gnu.org>
Fri, 7 Apr 2017 14:26:05 +0000 (08:26 -0600)
* config/iq2000/iq2000.c (final_prescan_insn): Do not separate a
CALL and NOTE_INSN_CALL_ARG_LOCATION.

From-SVN: r246761

gcc/ChangeLog
gcc/config/iq2000/iq2000.c

index 099805db1373a5a34e569928ca323b8010871203..d68f161ca17f5febdc13d345dfdfa43918dd4981 100644 (file)
@@ -1,3 +1,8 @@
+2017-04-07  Jeff Law  <law@redhat.com>
+
+       * config/iq2000/iq2000.c (final_prescan_insn): Do not separate a
+       CALL and NOTE_INSN_CALL_ARG_LOCATION.
+
 2017-04-07  Martin Liska  <mliska@suse.cz>
 
        PR target/79889
index 7e1ba0067a741cfcf2a1b3387e9e494aa9cbba1b..99abd76c5a69615e885d7ef4bda21db09e7767be 100644 (file)
@@ -1540,8 +1540,13 @@ final_prescan_insn (rtx_insn *insn, rtx opvec[] ATTRIBUTE_UNUSED,
        || (GET_CODE (PATTERN (insn)) == RETURN))
           && NEXT_INSN (PREV_INSN (insn)) == insn)
     {
-      rtx_insn *nop_insn = emit_insn_after (gen_nop (), insn);
+      rtx_insn *tmp = insn;
+      while (NEXT_INSN (tmp)
+            && NOTE_P (NEXT_INSN (tmp))
+            && NOTE_KIND (NEXT_INSN (tmp)) == NOTE_INSN_CALL_ARG_LOCATION)
+       tmp = NEXT_INSN (tmp);
 
+      rtx_insn *nop_insn = emit_insn_after (gen_nop (), tmp);
       INSN_ADDRESSES_NEW (nop_insn, -1);
     }