aboutsummaryrefslogtreecommitdiff
path: root/gas/config/atof-ieee.c
diff options
context:
space:
mode:
authorRichard Sandiford <rdsandiford@googlemail.com>2002-04-11 11:11:35 +0000
committerRichard Sandiford <rdsandiford@googlemail.com>2002-04-11 11:11:35 +0000
commit580a832ee02cd814b699edb649956b5ebc2e63cd (patch)
tree2aeffc2ccac8d321b0a3d88d98e2e49f87cf7030 /gas/config/atof-ieee.c
parentcd47f4f16f5148b31cbda56008d65a8554dce33e (diff)
downloadbinutils-580a832ee02cd814b699edb649956b5ebc2e63cd.zip
binutils-580a832ee02cd814b699edb649956b5ebc2e63cd.tar.gz
binutils-580a832ee02cd814b699edb649956b5ebc2e63cd.tar.bz2
* 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.
Diffstat (limited to 'gas/config/atof-ieee.c')
-rw-r--r--gas/config/atof-ieee.c19
1 files changed, 6 insertions, 13 deletions
diff --git a/gas/config/atof-ieee.c b/gas/config/atof-ieee.c
index ce6afbb..4459066 100644
--- a/gas/config/atof-ieee.c
+++ b/gas/config/atof-ieee.c
@@ -19,13 +19,6 @@
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. */
@@ -47,8 +40,8 @@ extern const char EXP_CHARS[];
/* 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[] =
@@ -302,7 +295,7 @@ gen_to_words (words, precision, exponent_bits)
/* 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)
{
@@ -341,7 +334,7 @@ gen_to_words (words, precision, exponent_bits)
}
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. */
@@ -382,7 +375,7 @@ gen_to_words (words, precision, exponent_bits)
}
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. */
@@ -598,7 +591,7 @@ gen_to_words (words, precision, exponent_bits)
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. */