From: Giovanni Bajo Date: Mon, 30 Jun 2003 19:22:48 +0000 (+0200) Subject: re PR c++/4933 (tree_list not supported by dump_expr) X-Git-Tag: releases/gcc-3.4.0~5300 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4497827651d07fa10006fbac4cf63a92cf83c2a2;p=thirdparty%2Fgcc.git re PR c++/4933 (tree_list not supported by dump_expr) 2003-06-30 Giovanni Bajo PR c++/4933 * error.c (dump_expr): Support correctly the COMPOUND_EXPR tree generated within a template. Use dump_expr to dump an expression sizeof. From-SVN: r68733 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 01acce93f476..9289d6770874 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2003-06-30 Giovanni Bajo + + PR c++/4933 + * error.c (dump_expr): Support correctly the COMPOUND_EXPR + tree generated within a template. Use dump_expr to dump an + expression sizeof. + 2003-06-30 Giovanni Bajo * mangle.c (write_expression): Exit gracefully when trying to diff --git a/gcc/cp/error.c b/gcc/cp/error.c index c687299d32f4..4cb5ba4173c9 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -1506,9 +1506,20 @@ dump_expr (tree t, int flags) case COMPOUND_EXPR: print_left_paren (scratch_buffer); - dump_expr (TREE_OPERAND (t, 0), flags | TFF_EXPR_IN_PARENS); - separate_with_comma (scratch_buffer); - dump_expr (TREE_OPERAND (t, 1), flags | TFF_EXPR_IN_PARENS); + /* Within templates, a COMPOUND_EXPR has only one operand, + containing a TREE_LIST of the two operands. */ + if (TREE_CODE (TREE_OPERAND (t, 0)) == TREE_LIST) + { + if (TREE_OPERAND (t, 1)) + abort(); + dump_expr_list (TREE_OPERAND (t, 0), flags | TFF_EXPR_IN_PARENS); + } + else + { + dump_expr (TREE_OPERAND (t, 0), flags | TFF_EXPR_IN_PARENS); + separate_with_comma (scratch_buffer); + dump_expr (TREE_OPERAND (t, 1), flags | TFF_EXPR_IN_PARENS); + } print_right_paren (scratch_buffer); break; @@ -1956,7 +1967,7 @@ dump_expr (tree t, int flags) if (TYPE_P (TREE_OPERAND (t, 0))) dump_type (TREE_OPERAND (t, 0), flags); else - dump_unary_op ("*", t, flags | TFF_EXPR_IN_PARENS); + dump_expr (TREE_OPERAND (t, 0), flags); print_right_paren (scratch_buffer); break;