This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
MIPS PATCH: ICE in ASM_OUTPUT_DOUBLE_INT
- To: egcs-patches at egcs dot cygnus dot com
- Subject: MIPS PATCH: ICE in ASM_OUTPUT_DOUBLE_INT
- From: Gavin Romig-Koch <gavin at cygnus dot com>
- Date: Mon, 10 May 1999 10:45:12 -0400 (EDT)
If no one objects, or otherwise sees a problem with this, I'll
push it in a few days.
* config/mips/mips.h (ASM_OUTPUT_DOUBLE_INT) : Use 'dword' if
TARGET_GAS.
Index: config/mips/mips.h
===================================================================
RCS file: /cvs/cvsfiles/devo/gcc/config/mips/mips.h,v
retrieving revision 1.162.6.7
diff -c -r1.162.6.7 mips.h
*** config/mips/mips.h 1999/04/14 18:43:09 1.162.6.7
--- config/mips/mips.h 1999/05/10 14:36:44
***************
*** 4328,4338 ****
fprintf (STREAM, "\n"); \
} while (0)
! /* Likewise for 64 bit, `char' and `short' constants. */
#define ASM_OUTPUT_DOUBLE_INT(STREAM,VALUE) \
do { \
! if (TARGET_64BIT) \
{ \
fprintf (STREAM, "\t.dword\t"); \
if (HOST_BITS_PER_WIDE_INT < 64 || GET_CODE (VALUE) != CONST_INT) \
--- 4328,4347 ----
fprintf (STREAM, "\n"); \
} while (0)
! /* Likewise for 64 bit, `char' and `short' constants.
+ FIXME: operand_subword can't handle some complex constant expressions
+ that output_addr_const can (for example it does not call
+ simplify_subtraction). Since GAS can handle dword, even for mipsII,
+ rely on that to avoid operand_subword for most of the cases where this
+ matters. Try gcc.c-torture/compile/930326-1.c with -mips2 -mlong64,
+ or the same case with the type of 'i' changed to long long.
+
+ */
+
#define ASM_OUTPUT_DOUBLE_INT(STREAM,VALUE) \
do { \
! if (TARGET_64BIT || TARGET_GAS) \
{ \
fprintf (STREAM, "\t.dword\t"); \
if (HOST_BITS_PER_WIDE_INT < 64 || GET_CODE (VALUE) != CONST_INT) \