diff options
author | Koen Kooi <koen@dominion.thruhere.net> | 2010-11-02 22:03:58 +0100 |
---|---|---|
committer | Koen Kooi <koen@dominion.thruhere.net> | 2010-11-02 22:12:02 +0100 |
commit | be10a6b1321f250b1034c7d9d0a8ef18b296eef1 (patch) | |
tree | 9249025cbfbfbee4cc430d62b27f75301dd4dfde /recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99308.patch | |
parent | 93b28937ac67ba46d65f55637e42552e224aa7e2 (diff) | |
download | meta-openembedded-be10a6b1321f250b1034c7d9d0a8ef18b296eef1.tar.gz |
angstrom-layers: meta-openembedded: replace poky gcc 4.5 sources with OE ones
This needs further investigation, but for now we can get the tested sources into the poky gcc harness
Signed-off-by: Koen Kooi <k-kooi@ti.com>
Diffstat (limited to 'recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99308.patch')
-rw-r--r-- | recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99308.patch | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99308.patch b/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99308.patch new file mode 100644 index 0000000000..bf35a2ed4e --- /dev/null +++ b/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99308.patch | |||
@@ -0,0 +1,112 @@ | |||
1 | 2010-07-15 Jie Zhang <jie@codesourcery.com> | ||
2 | |||
3 | Backport from mainline (originally from Sourcery G++ 4.4): | ||
4 | |||
5 | gcc/cp/ | ||
6 | 2010-04-07 Jie Zhang <jie@codesourcery.com> | ||
7 | |||
8 | PR c++/42556 | ||
9 | * typeck2.c (split_nonconstant_init_1): Drop empty CONSTRUCTOR | ||
10 | when all of its elements are non-constant and have been split out. | ||
11 | |||
12 | gcc/testsuite/ | ||
13 | 2010-04-07 Jie Zhang <jie@codesourcery.com> | ||
14 | |||
15 | PR c++/42556 | ||
16 | * g++.dg/init/pr42556.C: New test. | ||
17 | |||
18 | 2010-07-12 Yao Qi <yao@codesourcery.com> | ||
19 | |||
20 | Merge from Sourcery G++ 4.4: | ||
21 | |||
22 | === modified file 'gcc/cp/typeck2.c' | ||
23 | --- old/gcc/cp/typeck2.c 2010-02-23 18:32:20 +0000 | ||
24 | +++ new/gcc/cp/typeck2.c 2010-07-30 14:05:57 +0000 | ||
25 | @@ -549,13 +549,15 @@ | ||
26 | expression to which INIT should be assigned. INIT is a CONSTRUCTOR. */ | ||
27 | |||
28 | static void | ||
29 | -split_nonconstant_init_1 (tree dest, tree init) | ||
30 | +split_nonconstant_init_1 (tree dest, tree *initp) | ||
31 | { | ||
32 | unsigned HOST_WIDE_INT idx; | ||
33 | + tree init = *initp; | ||
34 | tree field_index, value; | ||
35 | tree type = TREE_TYPE (dest); | ||
36 | tree inner_type = NULL; | ||
37 | bool array_type_p = false; | ||
38 | + HOST_WIDE_INT num_type_elements, num_initialized_elements; | ||
39 | |||
40 | switch (TREE_CODE (type)) | ||
41 | { | ||
42 | @@ -567,6 +569,7 @@ | ||
43 | case RECORD_TYPE: | ||
44 | case UNION_TYPE: | ||
45 | case QUAL_UNION_TYPE: | ||
46 | + num_initialized_elements = 0; | ||
47 | FOR_EACH_CONSTRUCTOR_ELT (CONSTRUCTOR_ELTS (init), idx, | ||
48 | field_index, value) | ||
49 | { | ||
50 | @@ -589,12 +592,13 @@ | ||
51 | sub = build3 (COMPONENT_REF, inner_type, dest, field_index, | ||
52 | NULL_TREE); | ||
53 | |||
54 | - split_nonconstant_init_1 (sub, value); | ||
55 | + split_nonconstant_init_1 (sub, &value); | ||
56 | } | ||
57 | else if (!initializer_constant_valid_p (value, inner_type)) | ||
58 | { | ||
59 | tree code; | ||
60 | tree sub; | ||
61 | + HOST_WIDE_INT inner_elements; | ||
62 | |||
63 | /* FIXME: Ordered removal is O(1) so the whole function is | ||
64 | worst-case quadratic. This could be fixed using an aside | ||
65 | @@ -617,9 +621,22 @@ | ||
66 | code = build2 (INIT_EXPR, inner_type, sub, value); | ||
67 | code = build_stmt (input_location, EXPR_STMT, code); | ||
68 | add_stmt (code); | ||
69 | + | ||
70 | + inner_elements = count_type_elements (inner_type, true); | ||
71 | + if (inner_elements < 0) | ||
72 | + num_initialized_elements = -1; | ||
73 | + else if (num_initialized_elements >= 0) | ||
74 | + num_initialized_elements += inner_elements; | ||
75 | continue; | ||
76 | } | ||
77 | } | ||
78 | + | ||
79 | + num_type_elements = count_type_elements (type, true); | ||
80 | + /* If all elements of the initializer are non-constant and | ||
81 | + have been split out, we don't need the empty CONSTRUCTOR. */ | ||
82 | + if (num_type_elements > 0 | ||
83 | + && num_type_elements == num_initialized_elements) | ||
84 | + *initp = NULL; | ||
85 | break; | ||
86 | |||
87 | case VECTOR_TYPE: | ||
88 | @@ -655,7 +672,7 @@ | ||
89 | if (TREE_CODE (init) == CONSTRUCTOR) | ||
90 | { | ||
91 | code = push_stmt_list (); | ||
92 | - split_nonconstant_init_1 (dest, init); | ||
93 | + split_nonconstant_init_1 (dest, &init); | ||
94 | code = pop_stmt_list (code); | ||
95 | DECL_INITIAL (dest) = init; | ||
96 | TREE_READONLY (dest) = 0; | ||
97 | |||
98 | === added file 'gcc/testsuite/g++.dg/init/pr42556.C' | ||
99 | --- old/gcc/testsuite/g++.dg/init/pr42556.C 1970-01-01 00:00:00 +0000 | ||
100 | +++ new/gcc/testsuite/g++.dg/init/pr42556.C 2010-07-30 14:05:57 +0000 | ||
101 | @@ -0,0 +1,10 @@ | ||
102 | +// { dg-do compile } | ||
103 | +// { dg-options "-fdump-tree-gimple" } | ||
104 | + | ||
105 | +void foo (int a, int b, int c, int d) | ||
106 | +{ | ||
107 | + int v[4] = {a, b, c, d}; | ||
108 | +} | ||
109 | + | ||
110 | +// { dg-final { scan-tree-dump-not "v = {}" "gimple" } } | ||
111 | +// { dg-final { cleanup-tree-dump "gimple" } } | ||
112 | |||