diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 90761024ad095dbe61349ea0de2c7182471b75a8..4ff9680953e7fd6a21da31bd5fd31f287ef8ded2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2001-07-15  Richard Henderson  <rth@redhat.com>
+
+	* config/alpha/alpha.c (alpha_emit_xfloating_compare): Use CCmode
+	instead of COMPARE for the EQUIV expression.
+
 2001-07-15  Richard Henderson  <rth@redhat.com>
 
 	* flow.c (redirect_edge_and_branch_force): Initialize
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index 12bd57700495e7afb2abf2009c480f6ef1d2e66e..bab97c267189f5db6af21c025d75d1204b0b1c6c 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -2406,10 +2406,10 @@ alpha_emit_xfloating_compare (code, op0, op1)
   operands[1] = op1;
   out = gen_reg_rtx (DImode);
 
-  /* ??? Strange equiv cause what's actually returned is -1,0,1, not a
-     proper boolean value.  */
-  alpha_emit_xfloating_libcall (func, out, operands, 2, 
-				gen_rtx_COMPARE (TFmode, op0, op1));
+  /* ??? Strange mode for equiv because what's actually returned
+     is -1,0,1, not a proper boolean value.  */
+  alpha_emit_xfloating_libcall (func, out, operands, 2,
+				gen_rtx_fmt_ee (code, CCmode, op0, op1));
 
   return out;
 }