patches/gcc/4.3.0/210-pr35440.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Wed Dec 30 15:36:22 2009 +0100 (2009-12-30)
changeset 1669 61edd9d19e3c
parent 746 b150d6f590fc
permissions -rw-r--r--
scripts/functions: add aria2, a powerfull downloader

aria2 is a powerfull downloader that is capable of chunking and
parallel retrieval.

Due to li;itations in crosstool-NG retrieval facilities, it's not possible
to take fully advantage of aria2. It might happen that, in the future,
those limitations get lifted away, so we can take use features such as
parallel downloading from more than one server at the same time. For now,
it should still speed up downloads thanks to parallel downloading of chunks.
yann@552
     1
Original patch from gentoo: gentoo/src/patchsets/gcc/4.3.0/gentoo/60_all_gcc43-pr35440.patch
yann@552
     2
2008-03-19  Jakub Jelinek  <jakub@redhat.com>
yann@552
     3
yann@552
     4
	PR c/35440
yann@552
     5
	* c-pretty-print.c (pp_c_initializer_list): Handle CONSTRUCTOR
yann@552
     6
	for all types.
yann@552
     7
yann@552
     8
	* gcc.dg/pr35440.c: New test.
yann@552
     9
yann@552
    10
diff -durN gcc-4.3.0.orig/gcc/c-pretty-print.c gcc-4.3.0/gcc/c-pretty-print.c
yann@552
    11
--- gcc-4.3.0.orig/gcc/c-pretty-print.c	2008-01-29 14:59:59.000000000 +0100
yann@552
    12
+++ gcc-4.3.0/gcc/c-pretty-print.c	2008-06-10 14:44:54.000000000 +0200
yann@552
    13
@@ -1173,6 +1173,12 @@
yann@552
    14
   tree type = TREE_TYPE (e);
yann@552
    15
   const enum tree_code code = TREE_CODE (type);
yann@552
    16
 
yann@552
    17
+  if (TREE_CODE (e) == CONSTRUCTOR)
yann@552
    18
+    {
yann@552
    19
+      pp_c_constructor_elts (pp, CONSTRUCTOR_ELTS (e));
yann@552
    20
+      return;
yann@552
    21
+    }
yann@552
    22
+
yann@552
    23
   switch (code)
yann@552
    24
     {
yann@552
    25
     case RECORD_TYPE:
yann@552
    26
@@ -1207,16 +1213,12 @@
yann@552
    27
     case VECTOR_TYPE:
yann@552
    28
       if (TREE_CODE (e) == VECTOR_CST)
yann@552
    29
 	pp_c_expression_list (pp, TREE_VECTOR_CST_ELTS (e));
yann@552
    30
-      else if (TREE_CODE (e) == CONSTRUCTOR)
yann@552
    31
-	pp_c_constructor_elts (pp, CONSTRUCTOR_ELTS (e));
yann@552
    32
       else
yann@552
    33
 	break;
yann@552
    34
       return;
yann@552
    35
 
yann@552
    36
     case COMPLEX_TYPE:
yann@552
    37
-      if (TREE_CODE (e) == CONSTRUCTOR)
yann@552
    38
-	pp_c_constructor_elts (pp, CONSTRUCTOR_ELTS (e));
yann@552
    39
-      else if (TREE_CODE (e) == COMPLEX_CST || TREE_CODE (e) == COMPLEX_EXPR)
yann@552
    40
+      if (TREE_CODE (e) == COMPLEX_CST || TREE_CODE (e) == COMPLEX_EXPR)
yann@552
    41
 	{
yann@552
    42
 	  const bool cst = TREE_CODE (e) == COMPLEX_CST;
yann@552
    43
 	  pp_expression (pp, cst ? TREE_REALPART (e) : TREE_OPERAND (e, 0));
yann@552
    44
diff -durN gcc-4.3.0.orig/gcc/testsuite/gcc.dg/pr35440.c gcc-4.3.0/gcc/testsuite/gcc.dg/pr35440.c
yann@552
    45
--- gcc-4.3.0.orig/gcc/testsuite/gcc.dg/pr35440.c	1970-01-01 01:00:00.000000000 +0100
yann@552
    46
+++ gcc-4.3.0/gcc/testsuite/gcc.dg/pr35440.c	2008-06-10 14:44:54.000000000 +0200
yann@552
    47
@@ -0,0 +1,12 @@
yann@552
    48
+/* PR c/35440 */
yann@552
    49
+/* { dg-do compile } */
yann@552
    50
+/* { dg-options "-std=gnu99" } */
yann@552
    51
+
yann@552
    52
+struct A {};
yann@552
    53
+struct B { int i; char j[2]; };
yann@552
    54
+
yann@552
    55
+void foo (void)
yann@552
    56
+{
yann@552
    57
+  (struct A){}();			/* { dg-error "called object" } */
yann@552
    58
+  (struct B){ .i = 2, .j[1] = 1 }();	/* { dg-error "called object" } */
yann@552
    59
+}