2000-06-08 James E. Wilson <wilson@cygnus.com>
+ * dwarf2out.c (ASM_OUTPUT_DWARF_DATA8): Add new macro that uses
+ UNALIGNED_DOUBLE_INT_ASM_OP. Rename old macro to
+ ASM_OUTPUT_DWARF_CONST_DOUBLE.
+ (output_die, case dw_val_class_unsigned_const): Correct call to
+ ASM_OUTPUT_DWARF_DATA8.
+ (output_die, case dw_val_class_long_long): Use
+ ASM_OUTPUT_DWARF_CONST_DOUBLE.
+ * tree.c (host_integerp): Accept unsigned HOST_WIDE_INT values when
+ pos is zero.
+
* config/ia64/ia64-protos.h (ia64_output_end_prologue): Add.
(output_function_prologue): Fix mispelling.
(output_function_prologue, output_function_epilogue): Reorder to
fprintf ((FILE), "\t%s\t0x%x", UNALIGNED_INT_ASM_OP, (unsigned) (VALUE))
#endif
+#ifndef ASM_OUTPUT_DWARF_DATA8
+#define ASM_OUTPUT_DWARF_DATA8(FILE,VALUE) \
+ fprintf ((FILE), "\t%s\t0x%lx", UNALIGNED_DOUBLE_INT_ASM_OP, \
+ (unsigned long) (VALUE))
+#endif
+
#ifndef ASM_OUTPUT_DWARF_DATA
#define ASM_OUTPUT_DWARF_DATA(FILE,VALUE) \
fprintf ((FILE), "\t%s\t0x%lx", UNALIGNED_OFFSET_ASM_OP, \
(unsigned long) (VALUE))
#endif
-#ifndef ASM_OUTPUT_DWARF_DATA8
-#define ASM_OUTPUT_DWARF_DATA8(FILE,HIGH_VALUE,LOW_VALUE) \
+#ifndef ASM_OUTPUT_DWARF_CONST_DOUBLE
+#define ASM_OUTPUT_DWARF_CONST_DOUBLE(FILE,HIGH_VALUE,LOW_VALUE) \
do { \
if (WORDS_BIG_ENDIAN) \
{ \
typedef dw_die_ref *arange_ref;
/* Describe a double word constant value. */
+/* ??? Every instance of long_long in the code really means CONST_DOUBLE. */
typedef struct dw_long_long_struct
{
ASM_OUTPUT_DWARF_DATA4 (asm_out_file, AT_unsigned (a));
break;
case 8:
- ASM_OUTPUT_DWARF_DATA8 (asm_out_file,
- a->dw_attr_val.v.val_long_long.hi,
- a->dw_attr_val.v.val_long_long.low);
+ ASM_OUTPUT_DWARF_DATA8 (asm_out_file, AT_unsigned (a));
break;
default:
abort ();
ASM_COMMENT_START, dwarf_attr_name (a->dw_attr));
fputc ('\n', asm_out_file);
- ASM_OUTPUT_DWARF_DATA8 (asm_out_file,
- a->dw_attr_val.v.val_long_long.hi,
- a->dw_attr_val.v.val_long_long.low);
+ ASM_OUTPUT_DWARF_CONST_DOUBLE (asm_out_file,
+ a->dw_attr_val.v.val_long_long.hi,
+ a->dw_attr_val.v.val_long_long.low);
if (flag_debug_asm)
fprintf (asm_out_file,
&& ((TREE_INT_CST_HIGH (t) == 0
&& (HOST_WIDE_INT) TREE_INT_CST_LOW (t) >= 0)
|| (! pos && TREE_INT_CST_HIGH (t) == -1
- && (HOST_WIDE_INT) TREE_INT_CST_LOW (t) < 0)));
+ && (HOST_WIDE_INT) TREE_INT_CST_LOW (t) < 0)
+ || (! pos && TREE_INT_CST_HIGH (t) == 0
+ && TREE_UNSIGNED (TREE_TYPE (t)))));
}
/* Return the HOST_WIDE_INT least significant bits of T if it is an