Fix DWARF2 64-bit enum debugging support, for debugging IA-64 emacs bugs.

* 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.

From-SVN: r34457
This commit is contained in:
James E. Wilson 2000-06-08 17:25:22 +00:00 committed by Jim Wilson
parent 0186257f78
commit 21217bd004
3 changed files with 26 additions and 9 deletions

View File

@ -1,5 +1,15 @@
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

View File

@ -405,6 +405,12 @@ static void dwarf2out_frame_debug_expr PARAMS ((rtx, const char *));
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, \
@ -417,8 +423,8 @@ static void dwarf2out_frame_debug_expr PARAMS ((rtx, const char *));
(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) \
{ \
@ -2011,6 +2017,7 @@ typedef struct pubname_struct *pubname_ref;
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
{
@ -5098,9 +5105,7 @@ output_die (die)
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 ();
@ -5114,9 +5119,9 @@ output_die (die)
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,

View File

@ -4306,7 +4306,9 @@ host_integerp (t, pos)
&& ((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