diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index cebc09aae12a841d3e1eb8e515628d325156e158..b738ffb6eece564bd23a5341522bced8c93e00cb 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2003-06-12  J"orn Rennecke <joern.rennecke@superh.com>
+
+	* sh.md (adddi3_compact, subdi3_compact): Add earlyclobber
+	constraint modifier for operand 0.
+
 2003-06-12  Hans-Peter Nilsson  <hp@axis.com>
 
 	Don't warn on dollars in builtin macro definitions,
diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md
index 26ec41259b862bc1fbf75af59f778f9f48a27172..f662dc6efb4b44610da485518ebe94d63fbfb3dd 100644
--- a/gcc/config/sh/sh.md
+++ b/gcc/config/sh/sh.md
@@ -1014,7 +1014,7 @@
   [(set_attr "type" "arith_media")])
 
 (define_insn "adddi3_compact"
-  [(set (match_operand:DI 0 "arith_reg_operand" "=r")
+  [(set (match_operand:DI 0 "arith_reg_operand" "=&r")
 	(plus:DI (match_operand:DI 1 "arith_reg_operand" "%0")
 		 (match_operand:DI 2 "arith_reg_operand" "r")))
    (clobber (reg:SI T_REG))]
@@ -1122,7 +1122,7 @@
   [(set_attr "type" "arith_media")])
 
 (define_insn "subdi3_compact"
-  [(set (match_operand:DI 0 "arith_reg_operand" "=r")
+  [(set (match_operand:DI 0 "arith_reg_operand" "=&r")
 	(minus:DI (match_operand:DI 1 "arith_reg_operand" "0")
 		 (match_operand:DI 2 "arith_reg_operand" "r")))
    (clobber (reg:SI T_REG))]