(ASM_OUTPUT_FLOAT, ASM_OUTPUT_DOUBLE)
authorRichard Stallman <rms@gnu.org>
Wed, 31 Mar 1993 21:36:25 +0000 (21:36 +0000)
committerRichard Stallman <rms@gnu.org>
Wed, 31 Mar 1993 21:36:25 +0000 (21:36 +0000)
(ASM_OUTPUT_FLOAT, ASM_OUTPUT_DOUBLE)
(ASM_OUTPUT_FLOAT_OPERAND, ASM_OUTPUT_DOUBLE_OPERAND):
Use REAL_VALUE... macros.

From-SVN: r3977

gcc/config/m68k/next.h
gcc/config/m68k/sun2o4.h

index 60e9ad2813a23013f5d4a3e1683756370488f3f3..98b562da6b148f0fc75535253a97cfec61789865 100644 (file)
@@ -1,4 +1,5 @@
 /* next.h:  definitions for NeXT.
+Copyright (c) 1993 Free Software Foundation, Inc.
 
 This file is part of GNU CC.
 
@@ -185,29 +186,69 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 #undef ASM_OUTPUT_DOUBLE
 #define ASM_OUTPUT_DOUBLE(FILE,VALUE)                                  \
-  (REAL_VALUE_ISINF ((VALUE))                                          \
-   ? fprintf (FILE, "\t.double 0r%s99e999\n", ((VALUE) > 0 ? "" : "-")) \
-   : fprintf (FILE, "\t.double 0r%.20e\n", (VALUE)))
+ do { if (REAL_VALUE_ISINF (VALUE))                                    \
+        {                                                              \
+          if (REAL_VALUE_NEGATIVE (VALUE))                             \
+            fprintf (FILE, "\t.double 0r-99e999\n");                   \
+          else                                                         \
+            fprintf (FILE, "\t.double 0r99e999\n");                    \
+        }                                                              \
+      else                                                             \
+        { char dstr[30];                                               \
+          REAL_VALUE_TO_DECIMAL ((VALUE), "%.20e", dstr);              \
+          fprintf (FILE, "\t.double 0r%s\n", dstr);                    \
+        }                                                              \
+    } while (0)
 
 /* This is how to output an assembler line defining a `float' constant.  */
 
 #undef ASM_OUTPUT_FLOAT
 #define ASM_OUTPUT_FLOAT(FILE,VALUE)                                   \
-  (REAL_VALUE_ISINF ((VALUE))                                          \
-   ? fprintf (FILE, "\t.single 0r%s99e999\n", ((VALUE) > 0 ? "" : "-")) \
-   : fprintf (FILE, "\t.single 0r%.20e\n", (VALUE)))
+ do { if (REAL_VALUE_ISINF (VALUE))                                    \
+        {                                                              \
+          if (REAL_VALUE_NEGATIVE (VALUE))                             \
+            fprintf (FILE, "\t.single 0r-99e999\n");                   \
+          else                                                         \
+            fprintf (FILE, "\t.single 0r99e999\n");                    \
+        }                                                              \
+      else                                                             \
+        { char dstr[30];                                               \
+          REAL_VALUE_TO_DECIMAL ((VALUE), "%.20e", dstr);              \
+          fprintf (FILE, "\t.single 0r%s\n", dstr);                    \
+        }                                                              \
+    } while (0)
 
 #undef ASM_OUTPUT_FLOAT_OPERAND
-#define ASM_OUTPUT_FLOAT_OPERAND(FILE,VALUE)                           \
-  (REAL_VALUE_ISINF ((VALUE))                                          \
-   ? fprintf (FILE, "#0r%s99e999", ((VALUE) > 0 ? "" : "-")) \
-   : fprintf (FILE, "#0r%.9g", (VALUE)))
+#define ASM_OUTPUT_FLOAT_OPERAND(CODE,FILE,VALUE)                      \
+  do{ if (REAL_VALUE_ISINF (VALUE))                                    \
+        {                                                              \
+          if (REAL_VALUE_NEGATIVE (VALUE))                             \
+            fprintf (FILE, "#0r-99e999");                              \
+          else                                                         \
+            fprintf (FILE, "#0r99e999");                               \
+        }                                                              \
+      else                                                             \
+        { char dstr[30];                                               \
+          REAL_VALUE_TO_DECIMAL ((VALUE), "%.9g", dstr);               \
+          fprintf (FILE, "#0r%s", dstr);                               \
+        }                                                              \
+    } while (0)
 
 #undef ASM_OUTPUT_DOUBLE_OPERAND
 #define ASM_OUTPUT_DOUBLE_OPERAND(FILE,VALUE)                          \
-  (REAL_VALUE_ISINF ((VALUE))                                          \
-   ? fprintf (FILE, "#0r%s99e999", ((VALUE) > 0 ? "" : "-")) \
-   : fprintf (FILE, "#0r%.20g", (VALUE)))
+ do { if (REAL_VALUE_ISINF (VALUE))                                    \
+        {                                                              \
+          if (REAL_VALUE_NEGATIVE (VALUE))                             \
+            fprintf (FILE, "#0r-99e999");                              \
+          else                                                         \
+            fprintf (FILE, "#0r99e999");                               \
+        }                                                              \
+      else                                                             \
+        { char dstr[30];                                               \
+          REAL_VALUE_TO_DECIMAL ((VALUE), "%.20g", dstr);              \
+          fprintf (FILE, "#0r%s", dstr);                               \
+        }                                                              \
+    } while (0)
 
 #if 0 /* This is for system verson 3.0, which isn't out yet.  */
 #define ASM_OUTPUT_CONSTRUCTOR(FILE,NAME)      \
index 9dbe9306d79d274848e690dc15a38a4bb118a535..04b425e355f8b46808398dc5482fc909cc4e6f24 100644 (file)
@@ -1,5 +1,5 @@
 /* Definitions of target machine for GNU compiler.  Sun 2 running Sunos 4.
-   Copyright (C) 1987, 1988 Free Software Foundation, Inc.
+   Copyright (C) 1987, 1988, 1993 Free Software Foundation, Inc.
 
 This file is part of GNU CC.
 
@@ -97,34 +97,82 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 #undef ASM_OUTPUT_DOUBLE
 #define ASM_OUTPUT_DOUBLE(FILE,VALUE)                                  \
-  (REAL_VALUE_ISINF ((VALUE))                                          \
-   ? fprintf (FILE, "\t.double 0r%s99e999\n", ((VALUE) > 0 ? "" : "-")) \
-   : REAL_VALUE_MINUS_ZERO ((VALUE))                                   \
-   ? fprintf (FILE, "\t.long 0x80000000,0\n")                          \
-   : fprintf (FILE, "\t.double 0r%.20e\n", (VALUE)))
+  do { if (REAL_VALUE_ISINF (VALUE))                                   \
+        {                                                              \
+          if (REAL_VALUE_NEGATIVE (VALUE))                             \
+            fprintf (FILE, "\t.double 0r-99e999\n");                   \
+          else                                                         \
+            fprintf (FILE, "\t.double 0r99e999\n");                    \
+        }                                                              \
+      else if (REAL_VALUE_MINUS_ZERO (VALUE))                          \
+        {                                                              \
+          fprintf (FILE, "\t.long 0x80000000,0\n");                    \
+        }                                                              \
+      else                                                             \
+        { char dstr[30];                                               \
+          REAL_VALUE_TO_DECIMAL ((VALUE), "%.20e", dstr);              \
+          fprintf (FILE, "\t.double 0r%s\n", dstr);                    \
+        }                                                              \
+    } while (0)
 
 /* This is how to output an assembler line defining a `float' constant.  */
 
 #undef ASM_OUTPUT_FLOAT
 #define ASM_OUTPUT_FLOAT(FILE,VALUE)                                   \
-  (REAL_VALUE_ISINF ((VALUE))                                          \
-   ? fprintf (FILE, "\t.single 0r%s99e999\n", ((VALUE) > 0 ? "" : "-")) \
-   : REAL_VALUE_MINUS_ZERO ((VALUE))                                   \
-   ? fprintf (FILE, "\t.long 0x80000000\n")                            \
-   : fprintf (FILE, "\t.single 0r%.20e\n", (VALUE)))
+ do { if (REAL_VALUE_ISINF (VALUE))                                    \
+        {                                                              \
+          if (REAL_VALUE_NEGATIVE (VALUE))                             \
+            fprintf (FILE, "\t.single 0r-99e999\n");                   \
+          else                                                         \
+            fprintf (FILE, "\t.single 0r99e999\n");                    \
+        }                                                              \
+      else if (REAL_VALUE_MINUS_ZERO (VALUE))                          \
+        {                                                              \
+          fprintf (FILE, "\t.long 0x80000000\n");                      \
+        }                                                              \
+      else                                                             \
+        { char dstr[30];                                               \
+          REAL_VALUE_TO_DECIMAL ((VALUE), "%.20e", dstr);              \
+          fprintf (FILE, "\t.single 0r%s\n", dstr);                    \
+        }                                                              \
+    } while (0)
 
 #undef ASM_OUTPUT_FLOAT_OPERAND
-#define ASM_OUTPUT_FLOAT_OPERAND(FILE,VALUE)                           \
-  (REAL_VALUE_ISINF ((VALUE))                                          \
-   ? fprintf (FILE, "#0r%s99e999", ((VALUE) > 0 ? "" : "-"))           \
-   : REAL_VALUE_MINUS_ZERO ((VALUE))                                   \
-   ? fprintf (FILE, "#0r-0.0")                                         \
-   : fprintf (FILE, "#0r%.9g", (VALUE)))
+#define ASM_OUTPUT_FLOAT_OPERAND(CODE,FILE,VALUE)                      \
+ do { if (REAL_VALUE_ISINF (VALUE))                                    \
+        {                                                              \
+          if (REAL_VALUE_NEGATIVE (VALUE))                             \
+            fprintf (FILE, "#0r-99e999");                              \
+          else                                                         \
+            fprintf (FILE, "#0r99e999");                               \
+        }                                                              \
+      else if (REAL_VALUE_MINUS_ZERO (VALUE))                          \
+        {                                                              \
+          fprintf (FILE, "#0r-0.0");                                   \
+        }                                                              \
+      else                                                             \
+        { char dstr[30];                                               \
+          REAL_VALUE_TO_DECIMAL ((VALUE), "%.9g", dstr);               \
+          fprintf (FILE, "#0r%s", dstr);                               \
+        }                                                              \
+    } while (0)
 
 #undef ASM_OUTPUT_DOUBLE_OPERAND
 #define ASM_OUTPUT_DOUBLE_OPERAND(FILE,VALUE)                          \
-  (REAL_VALUE_ISINF ((VALUE))                                          \
-   ? fprintf (FILE, "#0r%s99e999", ((VALUE) > 0 ? "" : "-"))           \
-   : REAL_VALUE_MINUS_ZERO ((VALUE))                                   \
-   ? fprintf (FILE, "#0r-0.0")                                         \
-   : fprintf (FILE, "#0r%.20g", (VALUE)))
+ do { if (REAL_VALUE_ISINF (VALUE))                                    \
+        {                                                              \
+          if (REAL_VALUE_NEGATIVE (VALUE))                             \
+            fprintf (FILE, "#0r-99e999");                              \
+          else                                                         \
+            fprintf (FILE, "#0r99e999");                               \
+        }                                                              \
+      else if (REAL_VALUE_MINUS_ZERO (VALUE))                          \
+        {                                                              \
+          fprintf (FILE, "#0r-0.0");                                   \
+        }                                                              \
+      else                                                             \
+        { char dstr[30];                                               \
+          REAL_VALUE_TO_DECIMAL ((VALUE), "%.20g", dstr);              \
+          fprintf (FILE, "#0r%s", dstr);                               \
+        }                                                              \
+    } while (0)