OSDN Git Service

PR target/40473
authoramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 23 Sep 2009 00:23:24 +0000 (00:23 +0000)
committeramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 23 Sep 2009 00:23:24 +0000 (00:23 +0000)
* config/rs6000/rs6000.c (rs6000_output_function_prologue): Don't
call final to emit non-scheduled prologue, instead insert at entry.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@152056 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 1f1a797..eece990 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-22  Loren J. Rittle  <ljrittle@acm.org>
            Joseph S. Myers  <joseph@codesourcery.com>
 
index 83d9ee8..c4a7152 100644 (file)
@@ -19111,6 +19111,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
@@ -19130,10 +19132,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++;