1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/patches/gcc/4.3.0/210-pr35440.patch Mon Jan 05 20:37:03 2009 +0000
1.3 @@ -0,0 +1,59 @@
1.4 +Original patch from gentoo: gentoo/src/patchsets/gcc/4.3.0/gentoo/60_all_gcc43-pr35440.patch
1.5 +2008-03-19 Jakub Jelinek <jakub@redhat.com>
1.6 +
1.7 + PR c/35440
1.8 + * c-pretty-print.c (pp_c_initializer_list): Handle CONSTRUCTOR
1.9 + for all types.
1.10 +
1.11 + * gcc.dg/pr35440.c: New test.
1.12 +
1.13 +diff -durN gcc-4.3.0.orig/gcc/c-pretty-print.c gcc-4.3.0/gcc/c-pretty-print.c
1.14 +--- gcc-4.3.0.orig/gcc/c-pretty-print.c 2008-01-29 14:59:59.000000000 +0100
1.15 ++++ gcc-4.3.0/gcc/c-pretty-print.c 2008-06-10 14:44:54.000000000 +0200
1.16 +@@ -1173,6 +1173,12 @@
1.17 + tree type = TREE_TYPE (e);
1.18 + const enum tree_code code = TREE_CODE (type);
1.19 +
1.20 ++ if (TREE_CODE (e) == CONSTRUCTOR)
1.21 ++ {
1.22 ++ pp_c_constructor_elts (pp, CONSTRUCTOR_ELTS (e));
1.23 ++ return;
1.24 ++ }
1.25 ++
1.26 + switch (code)
1.27 + {
1.28 + case RECORD_TYPE:
1.29 +@@ -1207,16 +1213,12 @@
1.30 + case VECTOR_TYPE:
1.31 + if (TREE_CODE (e) == VECTOR_CST)
1.32 + pp_c_expression_list (pp, TREE_VECTOR_CST_ELTS (e));
1.33 +- else if (TREE_CODE (e) == CONSTRUCTOR)
1.34 +- pp_c_constructor_elts (pp, CONSTRUCTOR_ELTS (e));
1.35 + else
1.36 + break;
1.37 + return;
1.38 +
1.39 + case COMPLEX_TYPE:
1.40 +- if (TREE_CODE (e) == CONSTRUCTOR)
1.41 +- pp_c_constructor_elts (pp, CONSTRUCTOR_ELTS (e));
1.42 +- else if (TREE_CODE (e) == COMPLEX_CST || TREE_CODE (e) == COMPLEX_EXPR)
1.43 ++ if (TREE_CODE (e) == COMPLEX_CST || TREE_CODE (e) == COMPLEX_EXPR)
1.44 + {
1.45 + const bool cst = TREE_CODE (e) == COMPLEX_CST;
1.46 + pp_expression (pp, cst ? TREE_REALPART (e) : TREE_OPERAND (e, 0));
1.47 +diff -durN gcc-4.3.0.orig/gcc/testsuite/gcc.dg/pr35440.c gcc-4.3.0/gcc/testsuite/gcc.dg/pr35440.c
1.48 +--- gcc-4.3.0.orig/gcc/testsuite/gcc.dg/pr35440.c 1970-01-01 01:00:00.000000000 +0100
1.49 ++++ gcc-4.3.0/gcc/testsuite/gcc.dg/pr35440.c 2008-06-10 14:44:54.000000000 +0200
1.50 +@@ -0,0 +1,12 @@
1.51 ++/* PR c/35440 */
1.52 ++/* { dg-do compile } */
1.53 ++/* { dg-options "-std=gnu99" } */
1.54 ++
1.55 ++struct A {};
1.56 ++struct B { int i; char j[2]; };
1.57 ++
1.58 ++void foo (void)
1.59 ++{
1.60 ++ (struct A){}(); /* { dg-error "called object" } */
1.61 ++ (struct B){ .i = 2, .j[1] = 1 }(); /* { dg-error "called object" } */
1.62 ++}