aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1993-03-31 21:36:25 +0000
committerRichard Stallman <rms@gnu.org>1993-03-31 21:36:25 +0000
commit0ef5dce6d81e7004bcf1a6784a561d93ce6a1700 (patch)
tree7d97bed26a48b13d94f6f51d792854daa4057f55 /gcc
parent1861262dd7f90f827169ce38d31c6f7f6fcd4d1f (diff)
downloadgcc-0ef5dce6d81e7004bcf1a6784a561d93ce6a1700.zip
gcc-0ef5dce6d81e7004bcf1a6784a561d93ce6a1700.tar.gz
gcc-0ef5dce6d81e7004bcf1a6784a561d93ce6a1700.tar.bz2
(ASM_OUTPUT_FLOAT, ASM_OUTPUT_DOUBLE)
(ASM_OUTPUT_FLOAT, ASM_OUTPUT_DOUBLE) (ASM_OUTPUT_FLOAT_OPERAND, ASM_OUTPUT_DOUBLE_OPERAND): Use REAL_VALUE... macros. From-SVN: r3977
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/m68k/next.h67
-rw-r--r--gcc/config/m68k/sun2o4.h92
2 files changed, 124 insertions, 35 deletions
diff --git a/gcc/config/m68k/next.h b/gcc/config/m68k/next.h
index 60e9ad2..98b562d 100644
--- a/gcc/config/m68k/next.h
+++ b/gcc/config/m68k/next.h
@@ -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) \
diff --git a/gcc/config/m68k/sun2o4.h b/gcc/config/m68k/sun2o4.h
index 9dbe930..04b425e 100644
--- a/gcc/config/m68k/sun2o4.h
+++ b/gcc/config/m68k/sun2o4.h
@@ -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)