Fix PR debug/48203
authorRamana Radhakrishnan <ramana.radhakrishnan@linaro.org>
Sun, 20 Mar 2011 07:59:54 +0000 (07:59 +0000)
committerRamana Radhakrishnan <ramana@gcc.gnu.org>
Sun, 20 Mar 2011 07:59:54 +0000 (07:59 +0000)
From-SVN: r171193

gcc/ChangeLog
gcc/config/arm/arm.c

index 87fb0337ecd78815fd3a6330b12eb4859715d124..53820c1a3f545f464199ac21d08d46da3dfaeb8f 100644 (file)
@@ -1,3 +1,9 @@
+2011-03-20  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
+
+       PR debug/48023
+       * config/arm/arm.c (create_fix_barrier): Do not emit a minipool
+       between a call and its CALL_ARG_LOCATION note.
+
 2011-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
 
        PR debug/48178
index c6ba3fb28fe6be2ee476839d51cb3bc571faed1a..4784939b47f295d2a8bad269c6773cb3e11bca1e 100644 (file)
@@ -12022,6 +12022,16 @@ create_fix_barrier (Mfix *fix, HOST_WIDE_INT max_address)
   /* Make sure that we found a place to insert the jump.  */
   gcc_assert (selected);
 
+  /* Make sure we do not split a call and its corresponding
+     CALL_ARG_LOCATION note.  */
+  if (CALL_P (selected))
+    {
+      rtx next = NEXT_INSN (selected);
+      if (next && NOTE_P (next)
+         && NOTE_KIND (next) == NOTE_INSN_CALL_ARG_LOCATION)
+         selected = next;
+    }
+
   /* Create a new JUMP_INSN that branches around a barrier.  */
   from = emit_jump_insn_after (gen_jump (label), selected);
   JUMP_LABEL (from) = label;