martong added a comment.

Nice work!



================
Comment at: clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp:361
+  while (!SCtx->inTopFrame()) {
+    auto p = FramesModifying.insert(SCtx);
+    if (!p.second)
----------------
Why don't we add the stack frame here to `FramesModifyingCalculated` as well? 
If we are in a nested stack frame and we step back to a parent then it would be 
redundant to do the calculation again for the parent.

Ahh, to be honest, I think the idea of having both `FramesModifying` and 
`FramesModifyingCalculated` separated is prone to errors.
Why don't we have a simple map<StackFramContext, bool> with the boolean true 
meaning that the frame is modifying? And if the frame is not in the map that 
means it had never been calculated before.


================
Comment at: clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp:370
+  while (N && !N->getLocationAs<CallExitEnd>())
+    N = N->getFirstSucc();
+  return N;
----------------
Szelethus wrote:
> NoQ wrote:
> > This is the right successor because we're in a heavily trimmed exploded 
> > graph, right?
> Should be, yes.
Would it make sense to assert that there are no more than one successor ?


================
Comment at: clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp:386
+
+  while (CurrN) {
+    // Found a new inlined call.
----------------
Using a `for` could simplify this loop and would eliminate the need to have a 
redundant loop variable bump both at line 420 and at 393.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D108695/new/

https://reviews.llvm.org/D108695

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

Reply via email to