aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJames Van Artsdalen <jrv@gnu.org>1993-10-03 23:59:48 +0000
committerJames Van Artsdalen <jrv@gnu.org>1993-10-03 23:59:48 +0000
commit4a37b9392544c7d61c43b7b3fd0dc1ffd5fd37be (patch)
treeaae5f263bd947840e189525398db5045a86e0d50 /gcc
parent4fb21e9046a7538b383718a87027c97d52b698ec (diff)
downloadgcc-4a37b9392544c7d61c43b7b3fd0dc1ffd5fd37be.zip
gcc-4a37b9392544c7d61c43b7b3fd0dc1ffd5fd37be.tar.gz
gcc-4a37b9392544c7d61c43b7b3fd0dc1ffd5fd37be.tar.bz2
(ASM_OUTPUT_DOUBLE,ASM_OUTPUT_FLOAT): Use REAL_VALUE_ macros.
(ASM_OUTPUT_LONG_DOUBLE): New macro. (VALUE_REGNO): Add case XFmode. From-SVN: r5574
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/i386/next.h28
1 files changed, 25 insertions, 3 deletions
diff --git a/gcc/config/i386/next.h b/gcc/config/i386/next.h
index c59838f..1a327a52 100644
--- a/gcc/config/i386/next.h
+++ b/gcc/config/i386/next.h
@@ -38,20 +38,39 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#undef VALUE_REGNO
#define VALUE_REGNO(MODE) \
- (((MODE)==SFmode || (MODE)==DFmode) ? FIRST_FLOAT_REG : 0)
+ ((MODE) == SFmode || (MODE) == DFmode || (MODE) == XFmode \
+ ? FIRST_FLOAT_REG : 0)
/* 1 if N is a possible register number for a function value. */
#undef FUNCTION_VALUE_REGNO_P
#define FUNCTION_VALUE_REGNO_P(N) ((N) == 0 || (N)== FIRST_FLOAT_REG)
+#ifdef REAL_VALUE_TO_TARGET_LONG_DOUBLE
+#undef ASM_OUTPUT_LONG_DOUBLE
+#define ASM_OUTPUT_LONG_DOUBLE(FILE,VALUE) \
+ do { \
+ long hex[3]; \
+ REAL_VALUE_TO_TARGET_LONG_DOUBLE (VALUE, hex); \
+ if (sizeof (int) == sizeof (long)) \
+ fprintf (FILE, "\t.long 0x%x\n\t.long 0x%x\n\t.long 0x%x\n", \
+ hex[0], hex[1], hex[2]); \
+ else \
+ fprintf (FILE, "\t.long 0x%lx\n\t.long 0x%lx\n\t.long 0x%lx\n", \
+ hex[0], hex[1], hex[2]); \
+ } while (0)
+#endif
+
#ifdef REAL_VALUE_TO_TARGET_DOUBLE
#undef ASM_OUTPUT_DOUBLE
#define ASM_OUTPUT_DOUBLE(FILE,VALUE) \
do { \
long hex[2]; \
REAL_VALUE_TO_TARGET_DOUBLE (VALUE, hex); \
- fprintf (FILE, "\t.long 0x%x\n\t.long 0x%x\n", hex[0], hex[1]); \
+ if (sizeof (int) == sizeof (long)) \
+ fprintf (FILE, "\t.long 0x%x\n\t.long 0x%x\n", hex[0], hex[1]); \
+ else \
+ fprintf (FILE, "\t.long 0x%lx\n\t.long 0x%lx\n", hex[0], hex[1]); \
} while (0)
#endif
@@ -63,7 +82,10 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
do { \
long hex; \
REAL_VALUE_TO_TARGET_SINGLE (VALUE, hex); \
- fprintf (FILE, "\t.long 0x%x\n", hex); \
+ if (sizeof (int) == sizeof (long)) \
+ fprintf (FILE, "\t.long 0x%x\n", hex); \
+ else \
+ fprintf (FILE, "\t.long 0x%lx\n", hex); \
} while (0)
#endif