xref: /llvm-project/clang/test/OpenMP/vla_iterator_cache_bug.c (revision bfb77364d0be8a5b159cdcf4eaf8e7a720802e89)
1*bfb77364SRoger Ferrer Ibanez // RUN: %clang_cc1 -verify -fopenmp -x c++ -triple x86_64-unknown-linux-gnu \
2*bfb77364SRoger Ferrer Ibanez // RUN:   -emit-llvm %s -o - | FileCheck %s
3*bfb77364SRoger Ferrer Ibanez 
4*bfb77364SRoger Ferrer Ibanez // expected-no-diagnostics
5*bfb77364SRoger Ferrer Ibanez 
6*bfb77364SRoger Ferrer Ibanez extern int bounds1(int);
7*bfb77364SRoger Ferrer Ibanez extern int bounds2(int);
8*bfb77364SRoger Ferrer Ibanez 
9*bfb77364SRoger Ferrer Ibanez extern void fun2(int n, int *a, int *b);
10*bfb77364SRoger Ferrer Ibanez extern void fun3(int n, int *a, int *b);
11*bfb77364SRoger Ferrer Ibanez 
fun1(int n,int * a,int * b)12*bfb77364SRoger Ferrer Ibanez void fun1(int n, int *a, int *b)
13*bfb77364SRoger Ferrer Ibanez {
14*bfb77364SRoger Ferrer Ibanez #pragma omp task depend(iterator(j = 0 : bounds1(n)), in : a[b[j]])
15*bfb77364SRoger Ferrer Ibanez   {
16*bfb77364SRoger Ferrer Ibanez     fun2(n, a, b);
17*bfb77364SRoger Ferrer Ibanez   }
18*bfb77364SRoger Ferrer Ibanez // CHECK: alloca %struct.kmp_depend_info, i64 [[FIRST_VLA:%.*]], align 16
19*bfb77364SRoger Ferrer Ibanez 
20*bfb77364SRoger Ferrer Ibanez #pragma omp task depend(iterator(j = 0 : bounds2(n)), in : a[b[j]])
21*bfb77364SRoger Ferrer Ibanez   {
22*bfb77364SRoger Ferrer Ibanez     fun3(n, a, b);
23*bfb77364SRoger Ferrer Ibanez   }
24*bfb77364SRoger Ferrer Ibanez // CHECK-NOT: alloca %struct.kmp_depend_info, i64 [[FIRST_VLA]], align 16
25*bfb77364SRoger Ferrer Ibanez }
26