ormris added inline comments.
================
Comment at: lib/StaticAnalyzer/Core/LoopWidening.cpp:89
+                    new Callback(LCtx, MRMgr, ITraits));
+  Finder.matchAST(ASTCtx);
+
----------------
NoQ wrote:
> NoQ wrote:
> > george.karpenkov wrote:
> > > ormris wrote:
> > > > george.karpenkov wrote:
> > > > > IMO using the iterator directly (e.g. like it was done in 
> > > > > https://github.com/llvm-mirror/clang/blob/master/lib/StaticAnalyzer/Checkers/GCDAntipatternChecker.cpp#L213)
> > > > >  leads to a much cleaner code and saves you from having to define a 
> > > > > callback class.
> > > > Hmm... I think that's a better approach. Let me see if I can get that 
> > > > working.
> > > @ormris Yeah I'm really not sure why all examples use the callback API by 
> > > default.
> > Also, please match only the local AST, i.e. the body of the function under 
> > analysis, which can be obtained as `LCtx->getDecl()->getBody()`. There's no 
> > need to scan the whole translation unit.
> Actually not sure, would widening screw the previous stack frames as well? We 
> should test that, i guess. And even then, it's better to match a few stack 
> frames in the current stack trace than to match the whole translation unit.
I can't seem to get the new syntax to work. The following assert(0) is never 
triggered.

```
  auto Matches = match(varDecl(hasType(referenceType())).bind(MatchRef),
                       *LCtx->getDecl()->getBody(), ASTCtx);
  for (BoundNodes Match : Matches) {
    assert(0 && "anything");
    const VarDecl *VD = Match.getNodeAs<VarDecl>(MatchRef);
    const VarRegion *VarMem = MRMgr.getVarRegion(VD, LCtx);
    ITraits.setTrait(VarMem,
                     RegionAndSymbolInvalidationTraits::TK_PreserveContents);
  }

```


Repository:
  rC Clang

https://reviews.llvm.org/D47044



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to