diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 923a839ae7d94e4b44f8130794a2ca40a938178a..a94531c4764a05afc066bcf4f17e22c011064a4c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+1999-12-18  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
+
+	* config/c4x/c4x.md (rpts_top, rptb_top): Add clobbers for rs and re.
+
 1999-12-17 13:21 -0800  Zack Weinberg  <zack@rabi.columbia.edu>
 
 	* fixtests.c (is_cxx_header): New fn, split out of
diff --git a/gcc/config/c4x/c4x.md b/gcc/config/c4x/c4x.md
index 238a8e65cb13a0d8f8e3b01c04c5b6e16aa415e1..4f6a955a5dee71f19e6bac7f0e553254b8cb46b8 100644
--- a/gcc/config/c4x/c4x.md
+++ b/gcc/config/c4x/c4x.md
@@ -3414,6 +3414,7 @@
  "#"
   [(set_attr "type" "multi")])
 
+
 ; This can generate invalid stack slot displacements
 (define_split
  [(set (match_operand:QF 0 "reg_operand" "=f")
@@ -5120,8 +5121,7 @@
    (set (match_dup 0)
         (plus:QI (match_dup 0)
                  (const_int -1)))]
-  "reload_completed && (TARGET_DB && (find_reg_note (insn, REG_NONNEG, 0)
-	                || TARGET_LOOP_UNSIGNED))"
+  "reload_completed && TARGET_DB && TARGET_LOOP_UNSIGNED"
   "dbu%#\\t%0,%l1"
   [(set_attr "type" "db")])
 
@@ -5136,8 +5136,7 @@
         (plus:QI (match_dup 0)
                  (const_int -1)))
    (clobber (reg:CC_NOOV 21))]
-  "reload_completed && (TARGET_DB && (find_reg_note (insn, REG_NONNEG, 0)
-	                || TARGET_LOOP_UNSIGNED))"
+  "reload_completed && TARGET_DB && TARGET_LOOP_UNSIGNED"
   [(parallel [(set (pc)
         	   (if_then_else (ge (plus:QI (match_dup 0)
 			                      (const_int -1))
@@ -5168,7 +5167,9 @@
 ;
 (define_insn "rptb_top"
   [(use (label_ref (match_operand 0 "" "")))
-   (use (label_ref (match_operand 1 "" "")))]
+   (use (label_ref (match_operand 1 "" "")))
+   (clobber (reg:QI 25))
+   (clobber (reg:QI 26))]
   ""
   "*
    return ! final_sequence && c4x_rptb_rpts_p (insn, operands[0])
@@ -5178,7 +5179,9 @@
 
 (define_insn "rpts_top"
   [(unspec [(use (label_ref (match_operand 0 "" "")))
-            (use (label_ref (match_operand 1 "" "")))] 2)]
+            (use (label_ref (match_operand 1 "" "")))] 2)
+   (clobber (reg:QI 25))
+   (clobber (reg:QI 26))]
   ""
   "*
    return ! final_sequence && c4x_rptb_rpts_p (insn, operands[0])
@@ -5209,7 +5212,7 @@
   ""
   "if (INTVAL (operands[3]) > 1 || ! TARGET_RPTB)
      FAIL;
-   emit_jump_insn (gen_rptb_init (operands[0]));
+   emit_insn (gen_rptb_init (operands[0]));
    DONE;
   ")
 
@@ -6904,7 +6907,6 @@
 ;
 ; Which moves the bCC condition outside the inner loop for free.
 ;
-
 (define_peephole
   [(set (pc) (if_then_else (match_operator 3 "comparison_operator"
                            [(reg:CC 21) (const_int 0)])
@@ -6920,7 +6922,8 @@
             (pc)))
      (set (match_dup 0)
           (plus:QI (match_dup 0)
-                   (const_int -1)))])]
+                   (const_int -1)))
+     (clobber (reg:CC_NOOV 21))])]
   "! c4x_label_conflict (insn, operands[2], operands[1])"
   "db%I3\\t%0,%l1\\n\\tb%3\\t%l2"
   [(set_attr "type" "multi")])
@@ -6947,6 +6950,7 @@
 ;
 ; Peepholes to convert 'call label; rets' into jump label
 ;
+
 (define_peephole
   [(parallel [(call (mem:QI (match_operand:QI 0 "call_address_operand" ""))
                     (match_operand:QI 1 "general_operand" ""))