NoQ marked an inline comment as done. NoQ added a comment. Yeah, i think we should avoid such peeking and instead try to do everything in one pass. I.e., if we need to peek at the node above us, just make a visitor that delays the decision until it has precisely the information it needs. I guess i'll be slooowly moving in this direction.
Also every time i see special handling of `DeclRefExpr`s i get pretty worried. It usually means that this code almost never works. ================ Comment at: clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp:1912-1922 /// Find the ExplodedNode where the lvalue (the value of 'Ex') /// was computed. static const ExplodedNode* findNodeForExpression(const ExplodedNode *N, const Expr *Inner) { while (N) { if (N->getStmtForDiagnostics() == Inner) return N; ---------------- Szelethus wrote: > > When `bugreporter::trackExpressionValue()` is invoked on a `DeclRefExpr`, > > it tries to do most of its computations over the node in which this > > `DeclRefExpr` is computed, rather than on the error node (or whatever node > > is stuffed into it). I'm quite confused about the idea behind it and i > > highly doubt that it actually works correctly, but one reason why we can't > > simply use the error node may be that the binding to that variable might > > have already disappeared from the state by the time the bug is found. > > So, its possible that this function, and its uses in `trackExpressionValue` > is completely unnecessary? Of course it's necessary! Why would you ever write a system of mutually recursive visitors and then never implement an ad-hoc visitor within one of these visitors that allows you to quadratically visit nodes while you visit nodes, before actually visiting them in the real visitor? (/sarcasm) Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D67932/new/ https://reviews.llvm.org/D67932 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits