diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9b3a1fa3021e1b33ae1c760859a9056fc4ae4164..1ae16b22ae7642bd6d494b8d74b2f97c61677f2a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2003-04-24  Alexander Kabaev <kan@FreeBSD.ORG>
+
+	* config/sparc/sparc.md (umulsidi3, mulsidi3): Avoid using
+	const_umulsidi3_sp32 and const_mulsidi3_sp32 on 64bit targets 
+	where they might be not present. Use their _sp64 equivalent
+	instead.
+
 Thu Apr 24 20:42:12 CEST 2003  Jan Hubicka  <jh@suse.cz>
 
 	* i386.md (cvtsi2sdq): Fix typo in previous patch.
diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md
index bc8c634ac18d49c18bdd7e2055f89d52c72660b5..36b213d63d94edacd2ed7373747f41b6feae7d03 100644
--- a/gcc/config/sparc/sparc.md
+++ b/gcc/config/sparc/sparc.md
@@ -5289,9 +5289,12 @@
       if (TARGET_V8PLUS)
 	emit_insn (gen_const_mulsidi3_v8plus (operands[0], operands[1],
 					      operands[2]));
-      else
+      else if (TARGET_ARCH32)
 	emit_insn (gen_const_mulsidi3_sp32 (operands[0], operands[1],
 					    operands[2]));
+      else 
+	emit_insn (gen_const_mulsidi3_sp64 (operands[0], operands[1],
+					    operands[2]));
       DONE;
     }
   if (TARGET_V8PLUS)
@@ -5495,9 +5498,12 @@
       if (TARGET_V8PLUS)
 	emit_insn (gen_const_umulsidi3_v8plus (operands[0], operands[1],
 					       operands[2]));
-      else
+      else if (TARGET_ARCH32)
 	emit_insn (gen_const_umulsidi3_sp32 (operands[0], operands[1],
 					     operands[2]));
+      else 
+	emit_insn (gen_const_umulsidi3_sp64 (operands[0], operands[1],
+					     operands[2]));
       DONE;
     }
   if (TARGET_V8PLUS)