summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/gcc/gcc-4.3.3/fedora/gcc43-pr35751.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/gcc/gcc-4.3.3/fedora/gcc43-pr35751.patch')
-rw-r--r--meta/recipes-devtools/gcc/gcc-4.3.3/fedora/gcc43-pr35751.patch114
1 files changed, 114 insertions, 0 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.3.3/fedora/gcc43-pr35751.patch b/meta/recipes-devtools/gcc/gcc-4.3.3/fedora/gcc43-pr35751.patch
new file mode 100644
index 0000000000..37b84275e2
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-4.3.3/fedora/gcc43-pr35751.patch
@@ -0,0 +1,114 @@
12008-04-03 Jakub Jelinek <jakub@redhat.com>
2
3 PR c/35751
4 * c-decl.c (finish_decl): If extern or static var has variable
5 size, set TREE_TYPE (decl) to error_mark_node.
6
7 * decl.c (layout_var_decl): If extern or static var has variable
8 size, set TREE_TYPE (decl) to error_mark_node.
9
10 * gcc.dg/gomp/pr35751.c: New test.
11 * g++.dg/gomp/pr35751.C: New test.
12
13--- gcc/c-decl.c.jj 2008-04-03 09:41:42.000000000 +0200
14+++ gcc/c-decl.c 2008-04-03 18:20:52.000000000 +0200
15@@ -3481,7 +3481,10 @@ finish_decl (tree decl, tree init, tree
16 if (TREE_CODE (DECL_SIZE (decl)) == INTEGER_CST)
17 constant_expression_warning (DECL_SIZE (decl));
18 else
19- error ("storage size of %q+D isn%'t constant", decl);
20+ {
21+ error ("storage size of %q+D isn%'t constant", decl);
22+ TREE_TYPE (decl) = error_mark_node;
23+ }
24 }
25
26 if (TREE_USED (type))
27--- gcc/cp/decl.c.jj 2008-03-31 23:54:40.000000000 +0200
28+++ gcc/cp/decl.c 2008-04-03 18:30:19.000000000 +0200
29@@ -4442,7 +4442,10 @@ layout_var_decl (tree decl)
30 if (TREE_CODE (DECL_SIZE (decl)) == INTEGER_CST)
31 constant_expression_warning (DECL_SIZE (decl));
32 else
33- error ("storage size of %qD isn't constant", decl);
34+ {
35+ error ("storage size of %qD isn't constant", decl);
36+ TREE_TYPE (decl) = error_mark_node;
37+ }
38 }
39 }
40
41--- gcc/testsuite/gcc.dg/gomp/pr35751.c.jj 2008-04-03 18:26:12.000000000 +0200
42+++ gcc/testsuite/gcc.dg/gomp/pr35751.c 2008-04-03 18:25:51.000000000 +0200
43@@ -0,0 +1,34 @@
44+/* PR c/35751 */
45+/* { dg-do compile } */
46+/* { dg-options "-fopenmp" } */
47+
48+void
49+foo (int i)
50+{
51+ extern int a[i]; /* { dg-error "must have no linkage|storage size of" } */
52+ static int b[i]; /* { dg-error "storage size of" } */
53+
54+#pragma omp parallel
55+ {
56+ a[0] = 0;
57+ b[0] = 0;
58+ }
59+
60+#pragma omp parallel shared (a, b)
61+ {
62+ a[0] = 0;
63+ b[0] = 0;
64+ }
65+
66+#pragma omp parallel private (a, b)
67+ {
68+ a[0] = 0;
69+ b[0] = 0;
70+ }
71+
72+#pragma omp parallel firstprivate (a, b)
73+ {
74+ a[0] = 0;
75+ b[0] = 0;
76+ }
77+}
78--- gcc/testsuite/g++.dg/gomp/pr35751.C.jj 2008-04-03 18:32:13.000000000 +0200
79+++ gcc/testsuite/g++.dg/gomp/pr35751.C 2008-04-03 18:32:32.000000000 +0200
80@@ -0,0 +1,34 @@
81+// PR c/35751
82+// { dg-do compile }
83+// { dg-options "-fopenmp" }
84+
85+void
86+foo (int i)
87+{
88+ extern int a[i]; // { dg-error "storage size of" }
89+ static int b[i]; // { dg-error "storage size of" }
90+
91+#pragma omp parallel
92+ {
93+ a[0] = 0;
94+ b[0] = 0;
95+ }
96+
97+#pragma omp parallel shared (a, b)
98+ {
99+ a[0] = 0;
100+ b[0] = 0;
101+ }
102+
103+#pragma omp parallel private (a, b)
104+ {
105+ a[0] = 0;
106+ b[0] = 0;
107+ }
108+
109+#pragma omp parallel firstprivate (a, b)
110+ {
111+ a[0] = 0;
112+ b[0] = 0;
113+ }
114+}