From 0b2bea0c3b595d78fcccb9304093ad5d064d7616 Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Tue, 3 Dec 2002 06:53:11 +0000 Subject: [PATCH] re PR c++/8615 (ICE in tree_low_cst, at tree.c:3484) PR c++/8615 * error.c (dump_expr): Handle character constants with TREE_OVERFLOW set. PR c++/8615 * g++.dg/template/char1.C: New test. From-SVN: r59760 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/error.c | 5 ++++- gcc/testsuite/ChangeLog | 5 +++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 491d6e37b338..bb4e220eb94a 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2002-12-02 Mark Mitchell + + PR c++/8615 + * error.c (dump_expr): Handle character constants with + TREE_OVERFLOW set. + 2002-12-01 Mark Mitchell PR c++/5919 diff --git a/gcc/cp/error.c b/gcc/cp/error.c index 8a055582271b..a945014a5736 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -1473,7 +1473,10 @@ dump_expr (t, flags) else if (type == char_type_node) { output_add_character (scratch_buffer, '\''); - dump_char (tree_low_cst (t, 0)); + if (host_integerp (t, TREE_UNSIGNED (type))) + dump_char (tree_low_cst (t, TREE_UNSIGNED (type))); + else + output_printf (scratch_buffer, "\\x%x", TREE_INT_CST_LOW (t)); output_add_character (scratch_buffer, '\''); } else diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e5183a06b3e8..bd154a8c7ac5 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2002-12-02 Mark Mitchell + + PR c++/8615 + * g++.dg/template/char1.C: New test. + 2002-12-01 Mark Mitchell PR c++/5919 -- 2.47.2