Fix DWARF2 64-bit enum debugging support, for debugging IA-64 emacs bugs.
authorJames E. Wilson <wilson@cygnus.com>
Thu, 8 Jun 2000 17:25:22 +0000 (17:25 +0000)
committerJim Wilson <wilson@gcc.gnu.org>
Thu, 8 Jun 2000 17:25:22 +0000 (10:25 -0700)
* 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

gcc/ChangeLog
gcc/dwarf2out.c
gcc/tree.c

index 18956ddb437e78409008618fb94d1a2b881a8499..ecbc215307887e82942fbcdce7b7edb32d3b57c5 100644 (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
index 609006848b795f978b0c4458e77cbd31569775a7..81230d0cac246ccecdfe91d9e589cefff4c53389 100644 (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,
index 2a356edba8d7ae6b3cacac79b89597865a570106..9eee62b0c2f31d88ac7b3242581ccb3ddb25f2df 100644 (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