]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/40473 (-mno-sched-prolog breaks function parameter debug location lists)
authorAlan Modra <amodra@bigpond.net.au>
Wed, 23 Sep 2009 22:30:05 +0000 (22:30 +0000)
committerAlan Modra <amodra@gcc.gnu.org>
Wed, 23 Sep 2009 22:30:05 +0000 (08:00 +0930)
PR target/40473
* config/rs6000/rs6000.c (rs6000_output_function_prologue): Don't
call final to emit non-scheduled prologue, instead insert at entry.

From-SVN: r152105

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index ea2bfc48b2b26fb75161f6b0e12aa4f2b87da337..76efd04f3a97ef659211954ce16dacf4c984501f 100644 (file)
@@ -1,3 +1,9 @@
+2009-09-23  Alan Modra  <amodra@bigpond.net.au>
+
+       PR target/40473
+       * config/rs6000/rs6000.c (rs6000_output_function_prologue): Don't
+       call final to emit non-scheduled prologue, instead insert at entry.
+
 2009-09-23  Uros Bizjak  <ubizjak@gmail.com>
 
        PR c/39779
index 8b1965d3502392476342ca4f41979a1054ce39a6..b39c456720d2ca87a48ef5c85fb9fef479a775c7 100644 (file)
@@ -16223,6 +16223,8 @@ rs6000_output_function_prologue (FILE *file,
 
   if (! HAVE_prologue)
     {
+      rtx prologue;
+
       start_sequence ();
 
       /* A NOTE_INSN_DELETED is supposed to be at the start and end of
@@ -16242,10 +16244,14 @@ rs6000_output_function_prologue (FILE *file,
          }
       }
 
-      if (TARGET_DEBUG_STACK)
-       debug_rtx_list (get_insns (), 100);
-      final (get_insns (), file, FALSE);
+      prologue = get_insns ();
       end_sequence ();
+
+      if (TARGET_DEBUG_STACK)
+       debug_rtx_list (prologue, 100);
+
+      emit_insn_before_noloc (prologue, BB_HEAD (ENTRY_BLOCK_PTR->next_bb),
+                             ENTRY_BLOCK_PTR);
     }
 
   rs6000_pic_labelno++;