OSDN Git Service

PR middle-end/26412
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 23 Feb 2006 18:06:21 +0000 (18:06 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 23 Feb 2006 18:06:21 +0000 (18:06 +0000)
* gimplify.c (omp_add_variable): Guard variable size decl test with
DECL_SIZE (decl) check.

* gcc.dg/gomp/pr26412.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@111391 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/gimplify.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/gomp/pr26412.c [new file with mode: 0644]

index b04c578..1f81c5b 100644 (file)
@@ -1,3 +1,9 @@
+2006-02-23  Jakub Jelinek  <jakub@redhat.com>
+
+       PR middle-end/26412
+       * gimplify.c (omp_add_variable): Guard variable size decl test with
+       DECL_SIZE (decl) check.
+
 2006-02-23  Richard Guenther  <rguenther@suse.de>
 
        PR middle-end/26439
index 82e747f..10373c2 100644 (file)
@@ -4267,7 +4267,7 @@ omp_add_variable (struct gimplify_omp_ctx *ctx, tree decl, unsigned int flags)
   /* When adding a variable-sized variable, we have to handle all sorts
      of additional bits of data: the pointer replacement variable, and 
      the parameters of the type.  */
-  if (!TREE_CONSTANT (DECL_SIZE (decl)))
+  if (DECL_SIZE (decl) && !TREE_CONSTANT (DECL_SIZE (decl)))
     {
       /* Add the pointer replacement variable as PRIVATE if the variable
         replacement is private, else FIRSTPRIVATE since we'll need the
index 951bc11..3d359f1 100644 (file)
@@ -1,3 +1,8 @@
+2006-02-23  Jakub Jelinek  <jakub@redhat.com>
+
+       PR middle-end/26412
+       * gcc.dg/gomp/pr26412.c: New test.
+
 2006-02-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
 
        PR c++/26291
diff --git a/gcc/testsuite/gcc.dg/gomp/pr26412.c b/gcc/testsuite/gcc.dg/gomp/pr26412.c
new file mode 100644 (file)
index 0000000..6baecfe
--- /dev/null
@@ -0,0 +1,18 @@
+/* PR middle-end/26412 */
+/* { dg-do compile } */
+
+extern double a[];
+extern int b;
+
+double
+test (void)
+{
+  int i;
+  double c = 0;
+
+#pragma omp parallel for private(i) reduction(+:c)
+  for (i = 0; i < 10000; i++)
+    c += a[b];
+
+  return c;
+}