aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>2017-04-07 08:26:05 -0600
committerJeff Law <law@gcc.gnu.org>2017-04-07 08:26:05 -0600
commite3d1043293beed1696e6cb68f19d3bd6fb44c3b0 (patch)
tree9956cdf85f66ed1cd474dec5c4745f64be729376
parent3b6cb9e37e663d2d804059fab0acf93b22e0b4e3 (diff)
downloadgcc-e3d1043293beed1696e6cb68f19d3bd6fb44c3b0.zip
gcc-e3d1043293beed1696e6cb68f19d3bd6fb44c3b0.tar.gz
gcc-e3d1043293beed1696e6cb68f19d3bd6fb44c3b0.tar.bz2
iq2000.c (final_prescan_insn): Do not separate a CALL and NOTE_INSN_CALL_ARG_LOCATION.
* config/iq2000/iq2000.c (final_prescan_insn): Do not separate a CALL and NOTE_INSN_CALL_ARG_LOCATION. From-SVN: r246761
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/iq2000/iq2000.c7
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 099805d..d68f161 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/iq2000/iq2000.c b/gcc/config/iq2000/iq2000.c
index 7e1ba00..99abd76 100644
--- a/gcc/config/iq2000/iq2000.c
+++ b/gcc/config/iq2000/iq2000.c
@@ -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);
}