From 05008a0c3c6826ee6bc4b5d0368c068af1509d58 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 4 Apr 2008 15:07:27 +0200 Subject: re PR c/35440 (ICE resulting in completely broken diagnostic) PR c/35440 * c-pretty-print.c (pp_c_initializer_list): Handle CONSTRUCTOR for all types. * gcc.dg/pr35440.c: New test. From-SVN: r133897 --- gcc/c-pretty-print.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'gcc/c-pretty-print.c') diff --git a/gcc/c-pretty-print.c b/gcc/c-pretty-print.c index c8443d3..39044a3 100644 --- a/gcc/c-pretty-print.c +++ b/gcc/c-pretty-print.c @@ -1173,6 +1173,12 @@ pp_c_initializer_list (c_pretty_printer *pp, tree e) tree type = TREE_TYPE (e); const enum tree_code code = TREE_CODE (type); + if (TREE_CODE (e) == CONSTRUCTOR) + { + pp_c_constructor_elts (pp, CONSTRUCTOR_ELTS (e)); + return; + } + switch (code) { case RECORD_TYPE: @@ -1207,16 +1213,12 @@ pp_c_initializer_list (c_pretty_printer *pp, tree e) case VECTOR_TYPE: if (TREE_CODE (e) == VECTOR_CST) pp_c_expression_list (pp, TREE_VECTOR_CST_ELTS (e)); - else if (TREE_CODE (e) == CONSTRUCTOR) - pp_c_constructor_elts (pp, CONSTRUCTOR_ELTS (e)); else break; return; case COMPLEX_TYPE: - if (TREE_CODE (e) == CONSTRUCTOR) - pp_c_constructor_elts (pp, CONSTRUCTOR_ELTS (e)); - else if (TREE_CODE (e) == COMPLEX_CST || TREE_CODE (e) == COMPLEX_EXPR) + if (TREE_CODE (e) == COMPLEX_CST || TREE_CODE (e) == COMPLEX_EXPR) { const bool cst = TREE_CODE (e) == COMPLEX_CST; pp_expression (pp, cst ? TREE_REALPART (e) : TREE_OPERAND (e, 0)); -- cgit v1.1