diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a382d5176d419deca492eec2dde10ed8cb7ea662..0d396fa9391806cb0aa2cfcc5cd3b73c3ab6f84c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2001-06-11  Stephane Carrez  <Stephane.Carrez@worldnet.fr>
+
+	* config/m68hc11/m68hc11.md ("*lshrdi3_const32"): Mark the clobber 
+	as an early clobber to make sure it is not used by reload in 
+	one of the operands.
+
 2001-06-11  Mark Mitchell  <mark@codesourcery.com>
 
 	* doc/c-tree.texi: Update information about flag_honor_std.
diff --git a/gcc/config/m68hc11/m68hc11.md b/gcc/config/m68hc11/m68hc11.md
index 8be292d6693565ba2d2c0145eae0ad8a2af584ee..b7b8fe38d90da5e5fd09afcb2e80d9b612c166b5 100644
--- a/gcc/config/m68hc11/m68hc11.md
+++ b/gcc/config/m68hc11/m68hc11.md
@@ -3918,7 +3918,7 @@
   [(set (match_operand:DI 0 "nonimmediate_operand" "=<,um")
 	(ashift:DI (match_operand:DI 1 "general_operand" "umi,umi")
 		   (const_int 32)))
-   (clobber (match_scratch:HI 2 "=A,d"))]
+   (clobber (match_scratch:HI 2 "=&A,d"))]
    "reload_completed"
    [(const_int 0)]
    "/* Move the lowpart in the highpart first in case the shift
@@ -4689,7 +4689,7 @@
   [(set (match_operand:DI 0 "nonimmediate_operand" "=<,m,u")
 	(lshiftrt:DI (match_operand:DI 1 "general_operand" "umi,umi,umi")
 		     (const_int 32)))
-   (clobber (match_scratch:HI 2 "=A,d,d"))]
+   (clobber (match_scratch:HI 2 "=&A,d,d"))]
    ""
    "#")
 
@@ -4697,7 +4697,7 @@
   [(set (match_operand:DI 0 "nonimmediate_operand" "=<,um")
 	(lshiftrt:DI (match_operand:DI 1 "general_operand" "umi,umi")
 		     (const_int 32)))
-   (clobber (match_scratch:HI 2 "=A,d"))]
+   (clobber (match_scratch:HI 2 "=&A,d"))]
    "reload_completed"
    [(const_int 0)]
    "m68hc11_split_move (m68hc11_gen_lowpart (SImode, operands[0]),