r235985 - [OPENMP] Fix crash on loop control vars explicitly marked as private.
Alexey Bataev
a.bataev at hotmail.com
Tue Apr 28 06:20:05 PDT 2015
Author: abataev
Date: Tue Apr 28 08:20:05 2015
New Revision: 235985
URL: http://llvm.org/viewvc/llvm-project?rev=235985&view=rev
Log:
[OPENMP] Fix crash on loop control vars explicitly marked as private.
It is allowed to mark loop control vars as private in 'private' or 'lastprivate' clause, so no need to assert here.
Modified:
cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp
cfe/trunk/test/OpenMP/for_private_codegen.cpp
Modified: cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp?rev=235985&r1=235984&r2=235985&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp Tue Apr 28 08:20:05 2015
@@ -578,15 +578,12 @@ static void EmitPrivateLoopCounters(Code
ArrayRef<Expr *> Counters) {
for (auto *E : Counters) {
auto VD = cast<VarDecl>(cast<DeclRefExpr>(E)->getDecl());
- bool IsRegistered = LoopScope.addPrivate(VD, [&]() -> llvm::Value * {
+ (void)LoopScope.addPrivate(VD, [&]() -> llvm::Value *{
// Emit var without initialization.
auto VarEmission = CGF.EmitAutoVarAlloca(*VD);
CGF.EmitAutoVarCleanups(VarEmission);
return VarEmission.getAllocatedAddress();
});
- assert(IsRegistered && "counter already registered as private");
- // Silence the warning about unused variable.
- (void)IsRegistered;
}
}
Modified: cfe/trunk/test/OpenMP/for_private_codegen.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/for_private_codegen.cpp?rev=235985&r1=235984&r2=235985&view=diff
==============================================================================
--- cfe/trunk/test/OpenMP/for_private_codegen.cpp (original)
+++ cfe/trunk/test/OpenMP/for_private_codegen.cpp Tue Apr 28 08:20:05 2015
@@ -115,6 +115,12 @@ int main() {
vec[i] = t_var;
s_arr[i] = var;
}
+ int i;
+#pragma omp parallel
+#pragma omp for private(i)
+ for (i = 0; i < 2; ++i) {
+ ;
+ }
return tmain<int>();
#endif
}
More information about the cfe-commits
mailing list