diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 554930ace333a4edf204c5d7e819d9db7562aef3..47c8fb2c053f49fce1d0508390a25fae0a8fb588 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2004-08-13  J"orn Rennecke <joern.rennecke@superh.com>
+
+	* sh.md (cbranch define_delay) Use cond_delay_slot for
+	non-anulled condition too.
+
 2004-08-12  David Edelsohn  <edelsohn@gnu.org>
 
 	* config/rs6000/rs6000.c (any_parallel_operand): New predicate.
diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md
index 8b2c6f2bb96d6fc8ae314575cc9519481e4e4c56..cb7de4004c890f3f944e3a236aafed5d5f805ce7 100644
--- a/gcc/config/sh/sh.md
+++ b/gcc/config/sh/sh.md
@@ -524,12 +524,16 @@
 ;; Say that we have annulled true branches, since this gives smaller and
 ;; faster code when branches are predicted as not taken.
 
+;; ??? The non-annulled condition should really be "in_delay_slot",
+;; but insns that can be filled in non-annulled get priority over insns
+;; that can only be filled in anulled.
+
 (define_delay
   (and (eq_attr "type" "cbranch")
        (ne (symbol_ref "TARGET_SH2") (const_int 0)))
   ;; SH2e has a hardware bug that pretty much prohibits the use of
   ;; annuled delay slots.
-  [(eq_attr "in_delay_slot" "yes") (and (eq_attr "cond_delay_slot" "yes")
+  [(eq_attr "cond_delay_slot" "yes") (and (eq_attr "cond_delay_slot" "yes")
 					(not (eq_attr "cpu" "sh2e"))) (nil)])
 
 ;; -------------------------------------------------------------------------