forked from OSchip/llvm-project
[OPENMP] Support for re-declarations when checking captured variables.
Need to check for variables re-declarations when checking that the variable was already captured in the captured region. llvm-svn: 313805
This commit is contained in:
parent
0f245eccd6
commit
e85de8fcf9
|
@ -1114,11 +1114,7 @@ bool CapturedStmt::capturesVariable(const VarDecl *Var) const {
|
|||
for (const auto &I : captures()) {
|
||||
if (!I.capturesVariable() && !I.capturesVariableByCopy())
|
||||
continue;
|
||||
|
||||
// This does not handle variable redeclarations. This should be
|
||||
// extended to capture variables with redeclarations, for example
|
||||
// a thread-private variable in OpenMP.
|
||||
if (I.getCapturedVar() == Var)
|
||||
if (I.getCapturedVar()->getCanonicalDecl() == Var->getCanonicalDecl())
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -79,6 +79,9 @@ struct TT{
|
|||
ty Y;
|
||||
};
|
||||
|
||||
int global;
|
||||
extern int global;
|
||||
|
||||
// CHECK: define {{.*}}[[FOO:@.+]](
|
||||
int foo(int n) {
|
||||
int a = 0;
|
||||
|
@ -109,7 +112,7 @@ int foo(int n) {
|
|||
// CHECK: call void [[HVT1:@.+]](i[[SZ]] {{[^,]+}})
|
||||
#pragma omp target if(0)
|
||||
{
|
||||
a += 1;
|
||||
global += 1;
|
||||
}
|
||||
|
||||
// CHECK-DAG: [[RET:%.+]] = call i32 @__tgt_target(i32 -1, i8* @{{[^,]+}}, i32 1, i8** [[BP:%[^,]+]], i8** [[P:%[^,]+]], i[[SZ]]* getelementptr inbounds ([1 x i[[SZ]]], [1 x i[[SZ]]]* [[SIZET2]], i32 0, i32 0), i32* getelementptr inbounds ([1 x i32], [1 x i32]* [[MAPT2]], i32 0, i32 0))
|
||||
|
|
Loading…
Reference in New Issue