diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9eebb079394afb501bdbe323577f275217bd2895..9146cfb945aae81ef8a1e111851ca2cc32f1a4ab 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+	* config/bfin/bfin.c (gen_one_bundle): Don't create new nops when
+	optimizing for size.
+
 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
 
 	* df-scan.c (df_get_entry_block_def_set): Add STACK_POINTER_REGNUM
diff --git a/gcc/config/bfin/bfin.c b/gcc/config/bfin/bfin.c
index 90a67888b97892c1a8f6303d8bd734a8e6da64e9..8e0f355d17609544feea1bb02aadb7185ce274a2 100644
--- a/gcc/config/bfin/bfin.c
+++ b/gcc/config/bfin/bfin.c
@@ -4457,6 +4457,11 @@ gen_one_bundle (rtx slot[3])
 {
   gcc_assert (slot[1] != NULL_RTX);
 
+  /* Don't add extra NOPs if optimizing for size.  */
+  if (optimize_size
+      && (slot[0] == NULL_RTX || slot[2] == NULL_RTX))
+    return false;
+
   /* Verify that we really can do the multi-issue.  */
   if (slot[0])
     {