haifa-sched.c (sched_emit_insn): Emit insn before first non-scheduled insn.
authorUlrich Weigand <uweigand@de.ibm.com>
Mon, 2 May 2011 13:16:55 +0000 (13:16 +0000)
committerUlrich Weigand <uweigand@gcc.gnu.org>
Mon, 2 May 2011 13:16:55 +0000 (13:16 +0000)
* haifa-sched.c (sched_emit_insn): Emit insn before first
non-scheduled insn.  Inform back-end about new insn.  Add
new insn to scheduled_insns list.

From-SVN: r173251

gcc/ChangeLog
gcc/haifa-sched.c

index 8d20385cf6e1a0ad09f99f230929b377691c497b..f910409bfc74add8ab4e1c0f8fbb12bc545436fb 100644 (file)
@@ -1,3 +1,9 @@
+2011-05-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
+
+       * haifa-sched.c (sched_emit_insn): Emit insn before first
+       non-scheduled insn.  Inform back-end about new insn.  Add
+       new insn to scheduled_insns list.
+
 2011-05-02  Richard Guenther  <rguenther@suse.de>
 
        PR tree-optimization/48822
index 15d8f65375f8d1e4fac971dd3095004dd4e3bdef..f5580b867ab0ace4c8134a21c9f6eefa8b34d865 100644 (file)
@@ -5650,9 +5650,16 @@ sched_create_empty_bb_1 (basic_block after)
 rtx
 sched_emit_insn (rtx pat)
 {
-  rtx insn = emit_insn_after (pat, last_scheduled_insn);
-  last_scheduled_insn = insn;
+  rtx insn = emit_insn_before (pat, nonscheduled_insns_begin);
   haifa_init_insn (insn);
+
+  if (current_sched_info->add_remove_insn)
+    current_sched_info->add_remove_insn (insn, 0);
+
+  (*current_sched_info->begin_schedule_ready) (insn);
+  VEC_safe_push (rtx, heap, scheduled_insns, insn);
+
+  last_scheduled_insn = insn;
   return insn;
 }