From 35dc2bd884bfe86de76ff1b9937d63d6043f4d1f Mon Sep 17 00:00:00 2001
From: Mark Mitchell <mark@codesourcery.com>
Date: Sun, 20 Jul 2003 07:24:58 +0000
Subject: [PATCH] re PR debug/11279 (DWARF-2 output mishandles large enums)

	PR debug/11279
	* dwarf2out.c (gen_enumeration_type_die): Remember that
	enumerators can be unsigned.

From-SVN: r69605
---
 gcc/ChangeLog   | 6 ++++++
 gcc/dwarf2out.c | 5 +++--
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0905e540d5f2..2123f9cde7f0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2003-07-20  Mark Mitchell  <mark@codesourcery.com>
+
+	PR debug/11279
+	* dwarf2out.c (gen_enumeration_type_die): Remember that
+	enumerators can be unsigned.
+
 2003-07-19  Zack Weinberg  <zack@codesourcery.com>
 
 	* c-decl.c (named_labels, shadowed_labels, label_level_chain)
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 368927168d22..591d2da65390 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -10325,14 +10325,15 @@ gen_enumeration_type_die (tree type, dw_die_ref context_die)
 	  add_name_attribute (enum_die,
 			      IDENTIFIER_POINTER (TREE_PURPOSE (link)));
 
-	  if (host_integerp (TREE_VALUE (link), 0))
+	  if (host_integerp (TREE_VALUE (link), 
+			     TREE_UNSIGNED (TREE_TYPE (TREE_VALUE (link)))))
 	    {
 	      if (tree_int_cst_sgn (TREE_VALUE (link)) < 0)
 		add_AT_int (enum_die, DW_AT_const_value,
 			    tree_low_cst (TREE_VALUE (link), 0));
 	      else
 		add_AT_unsigned (enum_die, DW_AT_const_value,
-				 tree_low_cst (TREE_VALUE (link), 0));
+				 tree_low_cst (TREE_VALUE (link), 1));
 	    }
 	}
     }
-- 
GitLab