diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7f0266b425fa55df602bccc4248ba43875ea7fbc..875ed0a3e65bcfb11f042350bc1437e21de32b3d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2001-03-31  Marek Michalkiewicz  <marekm@linux.org.pl>
+
+	* config/avr/libgcc.S (__mulhi3): Optimize previous change.
+
 2001-03-30  Bernd Schmidt  <bernds@redhat.com>
 
 	* loop.c (load_mems): When generating a load from a pseudo, update
diff --git a/gcc/config/avr/libgcc.S b/gcc/config/avr/libgcc.S
index b438954b757f61db921c4a29ee5f0793e2fb17d3..d324a2166a61e8918cc18b857ebda7b0eb249abf 100644
--- a/gcc/config/avr/libgcc.S
+++ b/gcc/config/avr/libgcc.S
@@ -143,8 +143,7 @@ __mulhi3_skip1:
 
 	lsr	r_arg1H		; gets LSB of multiplier
 	ror	r_arg1L
-	cp	r_arg1L,__zero_reg__
-	cpc	r_arg1H,__zero_reg__
+	sbiw	r_arg1L,0
 	brne	__mulhi3_loop	; exit if multiplier = 0
 __mulhi3_exit:
 	mov	r_arg1H,r_resH	; result to return register