diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0bfbcaab39ee72fe4f7bb99ab0bb0e0e5e3725f0..681007b8ea4b17ff4c16905b5463b0b99debafa7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2012-09-10  Maxim Kuvyrkov  <maxim@codesourcery.com>
+
+	* config/m68k/m68k.c (m68k_sched_dfa_post_advance_cycle): Support
+	starting scheduling from a pre-existing state.
+
 2012-09-10  Diego Novillo  <dnovillo@google.com>
 
 	* vec.h (vec_t::quick_push): Remove overload that accepts 'T *'.
diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
index 0e55e1c230916c47f5932b5a568ced5ab277eb61..b2e2e6c256445c063494d6b177cf5bc3baad139e 100644
--- a/gcc/config/m68k/m68k.c
+++ b/gcc/config/m68k/m68k.c
@@ -6269,7 +6269,8 @@ m68k_sched_dfa_post_advance_cycle (void)
   while (--i >= 0)
     {
       if (state_transition (curr_state, sched_ib.insn) >= 0)
-	gcc_unreachable ();
+	/* Pick up scheduler state.  */
+	++sched_ib.filled;
     }
 }