2015-09-10 Jakub Jelinek <jakub@redhat.com>
+ PR middle-end/67517
+ * gimplify.c (gimplify_scan_omp_clauses): Instead of
+ asserting that decl is not specified in octx->variables,
+ break out of the loop if it is.
+
PR c++/67514
* gimplify.c (gimplify_omp_for): For loop SIMD construct, if
iterator is not explicitly determined, but is defined inside
}
else
break;
- gcc_checking_assert (splay_tree_lookup (octx->variables,
- (splay_tree_key)
- decl) == NULL);
+ if (splay_tree_lookup (octx->variables,
+ (splay_tree_key) decl) != NULL)
+ {
+ octx = NULL;
+ break;
+ }
flags = GOVD_SEEN;
if (!OMP_CLAUSE_LINEAR_NO_COPYIN (c))
flags |= GOVD_FIRSTPRIVATE;
2015-09-10 Jakub Jelinek <jakub@redhat.com>
+ PR middle-end/67517
+ * c-c++-common/gomp/pr67517.c: New test.
+
PR c++/67514
* g++.dg/gomp/pr67514.C: New test.
--- /dev/null
+/* PR middle-end/67517 */
+/* { dg-do compile } */
+/* { dg-options "-fopenmp" } */
+
+int
+foo (int x, int y, int z)
+{
+ int i;
+ #pragma omp parallel for simd linear (y : x & 15) linear (x : 16) linear (z : x & 15)
+ for (i = 0; i < 256; ++i)
+ x += 16, y += x & 15, z += x & 15;
+ return x + y + z;
+}