diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2019-01-20 14:02:54 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2019-01-20 14:02:54 +0000 | 
| commit | d5ea6fa648f8835a44adfb322b788e615d77cb71 (patch) | |
| tree | 570aa90958a58b9d6a71fa8594ee0ad8d2a18f2c /contrib/llvm/tools/clang/lib/CodeGen/CodeGenPGO.cpp | |
| parent | d9484dd61cc151c4f34c31e07f693fefa66316b5 (diff) | |
| parent | 676fbe8105eeb6ff4bb2ed261cb212fcfdbe7b63 (diff) | |
Notes
Diffstat (limited to 'contrib/llvm/tools/clang/lib/CodeGen/CodeGenPGO.cpp')
| -rw-r--r-- | contrib/llvm/tools/clang/lib/CodeGen/CodeGenPGO.cpp | 11 | 
1 files changed, 9 insertions, 2 deletions
diff --git a/contrib/llvm/tools/clang/lib/CodeGen/CodeGenPGO.cpp b/contrib/llvm/tools/clang/lib/CodeGen/CodeGenPGO.cpp index c8c2a1b956b8..776060743a63 100644 --- a/contrib/llvm/tools/clang/lib/CodeGen/CodeGenPGO.cpp +++ b/contrib/llvm/tools/clang/lib/CodeGen/CodeGenPGO.cpp @@ -165,7 +165,12 @@ struct MapRegionCounters : public RecursiveASTVisitor<MapRegionCounters> {    // Blocks and lambdas are handled as separate functions, so we need not    // traverse them in the parent context.    bool TraverseBlockExpr(BlockExpr *BE) { return true; } -  bool TraverseLambdaBody(LambdaExpr *LE) { return true; } +  bool TraverseLambdaExpr(LambdaExpr *LE) { +    // Traverse the captures, but not the body. +    for (const auto &C : zip(LE->captures(), LE->capture_inits())) +      TraverseLambdaCapture(LE, &std::get<0>(C), std::get<1>(C)); +    return true; +  }    bool TraverseCapturedStmt(CapturedStmt *CS) { return true; }    bool VisitDecl(const Decl *D) { @@ -544,6 +549,8 @@ struct ComputeRegionCounts : public ConstStmtVisitor<ComputeRegionCounts> {    void VisitCXXForRangeStmt(const CXXForRangeStmt *S) {      RecordStmtCount(S); +    if (S->getInit()) +      Visit(S->getInit());      Visit(S->getLoopVarStmt());      Visit(S->getRangeStmt());      Visit(S->getBeginStmt()); @@ -815,7 +822,7 @@ bool CodeGenPGO::skipRegionMappingForDecl(const Decl *D) {    // Don't map the functions in system headers.    const auto &SM = CGM.getContext().getSourceManager(); -  auto Loc = D->getBody()->getLocStart(); +  auto Loc = D->getBody()->getBeginLoc();    return SM.isInSystemHeader(Loc);  }  | 
