This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH 4/5] Altera Nios II: dwarf generation fix
- From: Chung-Lin Tang <cltang at codesourcery dot com>
- To: gcc-patches <gcc-patches at gcc dot gnu dot org>
- Cc: Sandra Loosemore <sandra at codesourcery dot com>, Julian Brown <julian at codesourcery dot com>
- Date: Thu, 18 Apr 2013 21:49:40 +0800
- Subject: [PATCH 4/5] Altera Nios II: dwarf generation fix
This patch was a fix by Julian which corrected a HOST_BITS_PER_WIDE_INT
host dependency in dwarf generation. Nios II does not have
need_64bit_hwint switched on during configuring, and ran into GDB test
FAILs originating from this problem.
2013-04-18 Julian Brown <julian@codesourcery.com>
* dwarf2out.c (gen_enumeration_type_die): Fix
HOST_BITS_PER_WIDE_INT dependency behavior in enumeration type
DIE generation.
Index: gcc/dwarf2out.c
===================================================================
--- gcc/dwarf2out.c (revision 407083)
+++ gcc/dwarf2out.c (revision 409063)
@@ -17025,15 +17025,21 @@
if (TREE_CODE (value) == CONST_DECL)
value = DECL_INITIAL (value);
- if (host_integerp (value, TYPE_UNSIGNED (TREE_TYPE (value))))
+ if (host_integerp (value, TYPE_UNSIGNED (TREE_TYPE (value)))
+ && (simple_type_size_in_bits (TREE_TYPE (value))
+ <= HOST_BITS_PER_WIDE_INT || host_integerp (value, 0)))
/* DWARF2 does not provide a way of indicating whether or
not enumeration constants are signed or unsigned. GDB
always assumes the values are signed, so we output all
values as if they were signed. That means that
enumeration constants with very large unsigned values
will appear to have negative values in the debugger. */
- add_AT_int (enum_die, DW_AT_const_value,
- tree_low_cst (value, tree_int_cst_sgn (value) > 0));
+ add_AT_int (enum_die, DW_AT_const_value, TREE_INT_CST_LOW (value));
+ else
+ /* Enumeration constants may be wider than HOST_WIDE_INT. Handle
+ that here. */
+ add_AT_double (enum_die, DW_AT_const_value,
+ TREE_INT_CST_HIGH (value), TREE_INT_CST_LOW (value));
}
add_gnat_descriptive_type_attribute (type_die, type, context_die);