diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index fb328da633ccf74492003fc942928067caaadd67..76baa3c3ac2dcb2194650e70c4af8650619f77ef 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,7 @@
+2006-04-24  Julian Brown  <julian@codesourcery.com>
+
+	* floatformat.c (floatformat_to_double): Fix (biased) exponent=0 case.
+
 2006-03-29  Jim Blandy  <jimb@codesourcery.com>
 
  	* pex-common.c (pex_input_file, pex_input_pipe): New functions.
diff --git a/libiberty/floatformat.c b/libiberty/floatformat.c
index bd31efac7c17bd5c260a73a2618f2a7bbee2d4d7..0bbb8ed98898037824f592cfdf5258f2c83f289b 100644
--- a/libiberty/floatformat.c
+++ b/libiberty/floatformat.c
@@ -394,7 +394,7 @@ floatformat_to_double (const struct floatformat *fmt,
 
       /* Handle denormalized numbers.  FIXME: What should we do for
 	 non-IEEE formats?  */
-      if (exponent == 0 && mant != 0)
+      if (special_exponent && exponent == 0 && mant != 0)
 	dto += ldexp ((double)mant,
 		      (- fmt->exp_bias
 		       - mant_bits