@@ -6214,9 +6214,12 @@ gimplify_scan_omp_clauses (tree *list_p,
}
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;
@@ -0,0 +1,13 @@
+/* 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;
+}