* doc/invoke.texi (TC_LARGEST_EXPONENT_IS_NORMAL): Document.
authorRichard Sandiford <rdsandiford@googlemail.com>
Thu, 11 Apr 2002 11:11:35 +0000 (11:11 +0000)
committerRichard Sandiford <rdsandiford@googlemail.com>
Thu, 11 Apr 2002 11:11:35 +0000 (11:11 +0000)
* config/atof-ieee.c (TC_LARGEST_EXPONENT_IS_NORMAL): Add an
argument for the precision.
(gen_to_words): Update accordingly.

gas/ChangeLog
gas/config/atof-ieee.c
gas/doc/internals.texi

index 57da62d387f221705b6a30ca2b587e47b524b174..f0d019cf4f497e69d655040f753b1fd2b1f0efda 100644 (file)
@@ -1,3 +1,10 @@
+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
index ce6afbbd340dcee089d6664091b4300e19bf52dc..4459066a6574862218363f691658b996bd5430da 100644 (file)
    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.  */
index e7d300955a3f970d8d00bca28c2032fefce4a401..6bd327701a60770f12fe304931f87b5d34b9ead5 100644 (file)
@@ -1151,6 +1151,16 @@ a pointer to a integer that should be filled in with the number of
 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