+2002-04-11 Richard Sandiford <rsandifo@redhat.com>
+
+ * doc/invoke.texi (TC_LARGEST_EXPONENT_IS_NORMAL): Document.
+ * config/atof-ieee.c (TC_LARGEST_EXPONENT_IS_NORMAL): Add an
+ argument for the precision.
+ (gen_to_words): Update accordingly.
+
2002-04-10 Alan Modra <amodra@bigpond.net.au>
* as.c (parse_args <OPTION_VERSION>): Use VERSION is
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
-/* Some float formats are based on the IEEE standard, but use the
- largest exponent for normal numbers instead of NaNs and infinites.
- The macro TC_LARGEST_EXPONENT_IS_NORMAL should evaluate to true
- if the target machine uses such a format. The macro can depend on
- command line flags if necessary. There is no need to define the
- macro if it would always be 0. */
-
#include "as.h"
/* Flonums returned here. */
/* Length in LittleNums of guard bits. */
#define GUARD (2)
-#ifndef TC_LARGEST_EXPONENT_IS_NORMAL
-#define TC_LARGEST_EXPONENT_IS_NORMAL 0
+#ifndef TC_LARGEST_EXPONENT_IS_NORMAL(PRECISION)
+#define TC_LARGEST_EXPONENT_IS_NORMAL(PRECISION) 0
#endif
static const unsigned long mask[] =
/* NaN: Do the right thing. */
if (generic_floating_point_number.sign == 0)
{
- if (TC_LARGEST_EXPONENT_IS_NORMAL)
+ if (TC_LARGEST_EXPONENT_IS_NORMAL (precision))
as_warn ("NaNs are not supported by this target\n");
if (precision == F_PRECISION)
{
}
else if (generic_floating_point_number.sign == 'P')
{
- if (TC_LARGEST_EXPONENT_IS_NORMAL)
+ if (TC_LARGEST_EXPONENT_IS_NORMAL (precision))
as_warn ("Infinities are not supported by this target\n");
/* +INF: Do the right thing. */
}
else if (generic_floating_point_number.sign == 'N')
{
- if (TC_LARGEST_EXPONENT_IS_NORMAL)
+ if (TC_LARGEST_EXPONENT_IS_NORMAL (precision))
as_warn ("Infinities are not supported by this target\n");
/* Negative INF. */
return return_value;
}
else if ((unsigned long) exponent_4 > mask[exponent_bits]
- || (! TC_LARGEST_EXPONENT_IS_NORMAL
+ || (! TC_LARGEST_EXPONENT_IS_NORMAL (precision)
&& (unsigned long) exponent_4 == mask[exponent_bits]))
{
/* Exponent overflow. Lose immediately. */
gas/bignum.h). The function should return NULL upon success or an error string
upon failure.
+@item TC_LARGEST_EXPONENT_IS_NORMAL
+@cindex TC_LARGEST_EXPONENT_IS_NORMAL (@var{precision})
+This macro is used only by @file{atof-ieee.c}. It should evaluate to true
+if floats of the given precision use the largest exponent for normal numbers
+instead of NaNs and infinities. @var{precision} is @samp{F_PRECISION} for
+single precision, @samp{D_PRECISION} for double precision, or
+@samp{X_PRECISION} for extended double precision.
+
+The macro has a default definition which returns 0 for all cases.
+
@item md_reloc_size
@cindex md_reloc_size
This variable is only used in the original version of gas (not