diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bea01b052976ed9f2fd3fa28181b9625bbe5074c..f7d4ef0aa562423715369cfe3d0d726232136fb7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2007-01-18  Richard Sandiford  <richard@codesourcery.com>
+
+	* config/m68k/m68k.c (m68k_use_return_insn): Update comments
+	before function.  Extend register save check to include all
+	registers, not just integer ones.
+
 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
 
 	* config/m68k/m68k-protos.h (use_return_insn): Rename to...
diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
index 1bfa6867cd50961b4649ffb54b930571d57af8c5..a2f9f015c8795f2b00203a940edeebcbd41a0c12 100644
--- a/gcc/config/m68k/m68k.c
+++ b/gcc/config/m68k/m68k.c
@@ -1019,7 +1019,8 @@ m68k_output_function_prologue (FILE *stream,
     }
 }
 
-/* Return true if this function's epilogue can be output as RTL.  */
+/* Return true if a simple (return) instruction is sufficient for this
+   instruction (i.e. if no epilogue is needed).  */
 
 bool
 m68k_use_return_insn (void)
@@ -1027,10 +1028,8 @@ m68k_use_return_insn (void)
   if (!reload_completed || frame_pointer_needed || get_frame_size () != 0)
     return false;
 
-  /* We can output the epilogue as RTL only if no registers need to be
-     restored.  */
   m68k_compute_frame_layout ();
-  return current_frame.reg_no ? false : true;
+  return current_frame.offset == 0;
 }
 
 /* This function generates the assembly code for function exit,