diff options
Diffstat (limited to 'clang/lib/Sema/TreeTransform.h')
-rw-r--r-- | clang/lib/Sema/TreeTransform.h | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h index 29bfcd45370..17642722b81 100644 --- a/clang/lib/Sema/TreeTransform.h +++ b/clang/lib/Sema/TreeTransform.h @@ -6326,7 +6326,7 @@ TreeTransform<Derived>::TransformOMPExecutableDirective( TClauses.push_back(Clause); } else { - TClauses.push_back(0); + TClauses.push_back(nullptr); } } if (!D->getAssociatedStmt()) { @@ -9911,9 +9911,22 @@ template<typename Derived> StmtResult TreeTransform<Derived>::TransformCapturedStmt(CapturedStmt *S) { SourceLocation Loc = S->getLocStart(); - unsigned NumParams = S->getCapturedDecl()->getNumParams(); + CapturedDecl *CD = S->getCapturedDecl(); + unsigned NumParams = CD->getNumParams(); + unsigned ContextParamPos = CD->getContextParamPosition(); + SmallVector<Sema::CapturedParamNameType, 4> Params; + for (unsigned I = 0; I < NumParams; ++I) { + if (I != ContextParamPos) { + Params.push_back( + std::make_pair( + CD->getParam(I)->getName(), + getDerived().TransformType(CD->getParam(I)->getType()))); + } else { + Params.push_back(std::make_pair(StringRef(), QualType())); + } + } getSema().ActOnCapturedRegionStart(Loc, /*CurScope*/0, - S->getCapturedRegionKind(), NumParams); + S->getCapturedRegionKind(), Params); StmtResult Body = getDerived().TransformStmt(S->getCapturedStmt()); if (Body.isInvalid()) { |