diff options
author | Alexey Bataev <a.bataev@hotmail.com> | 2015-04-02 13:07:08 +0000 |
---|---|---|
committer | Alexey Bataev <a.bataev@hotmail.com> | 2015-04-02 13:07:08 +0000 |
commit | 8bf6b3eaf76ac17db38d9f757395043bf8b16bdc (patch) | |
tree | 8d374252ee71bfc7f075cefef2d892d471e87fe8 /clang/lib/Sema/TreeTransform.h | |
parent | 3ebba5237ee09ae4e5b2e2d39bda87d664a0f3b7 (diff) | |
download | bcm5719-llvm-8bf6b3eaf76ac17db38d9f757395043bf8b16bdc.tar.gz bcm5719-llvm-8bf6b3eaf76ac17db38d9f757395043bf8b16bdc.zip |
[OPENMP] Fix crash on private variables not used in OpenMP region in templates.
llvm-svn: 233913
Diffstat (limited to 'clang/lib/Sema/TreeTransform.h')
-rw-r--r-- | clang/lib/Sema/TreeTransform.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h index 6116a78dc7b..df0e4b316d7 100644 --- a/clang/lib/Sema/TreeTransform.h +++ b/clang/lib/Sema/TreeTransform.h @@ -6670,7 +6670,16 @@ StmtResult TreeTransform<Derived>::TransformOMPExecutableDirective( if (!D->getAssociatedStmt()) { return StmtError(); } - AssociatedStmt = getDerived().TransformStmt(D->getAssociatedStmt()); + getDerived().getSema().ActOnOpenMPRegionStart(D->getDirectiveKind(), + /*CurScope=*/nullptr); + StmtResult Body; + { + Sema::CompoundScopeRAII CompoundScope(getSema()); + Body = getDerived().TransformStmt( + cast<CapturedStmt>(D->getAssociatedStmt())->getCapturedStmt()); + } + AssociatedStmt = + getDerived().getSema().ActOnOpenMPRegionEnd(Body, TClauses); if (AssociatedStmt.isInvalid()) { return StmtError(); } |