Szelethus added inline comments.

================
Comment at: clang/test/Analysis/stream.c:274-284
 // Check that "location uniqueing" works.
 // This results in reporting only one occurence of resource leak for a stream.
 void check_leak_noreturn_2() {
   FILE *F1 = tmpfile();
   if (!F1)
     return;
   if (Test == 1) {
----------------
Szelethus wrote:
> balazske wrote:
> > NoQ wrote:
> > > balazske wrote:
> > > > Szelethus wrote:
> > > > > Why did this change? Is there a sink in the return branch?
> > > > The change is probably because D83115. Because the "uniqueing" one 
> > > > resource leak is reported from the two possible, and the order changes 
> > > > somehow (probably not the shortest is found first).
> > > The shortest should still be found first. I strongly suggest debugging 
> > > this. Looks like a bug in suppress-on-sink.
> > There is no code that ensures that the shortest path is reported. In this 
> > case one equivalence class is created with both bug reports. If 
> > `SuppressOnSink` is false the last one is returned from the list, otherwise 
> > the first one (`PathSensitiveBugReporter::findReportInEquivalenceClass`), 
> > this causes the difference (seems to be unrelated to D83115).
> > There is no code that ensures that the shortest path is reported.
> 
> There absolutely should be -- See the summary of D65379 for more info, CTRL+F 
> "shortest" helps quite a bit as well. For each bug report, we create a bug 
> path (a path in the exploded graph from the root to the sepcific bug reports 
> error node), and sort them by length.
> 
> It all feels super awkward -- 
> `PathSensitiveBugReporter::findReportInEquivalenceClass` picks out a bug 
> report from an equivalence class as you described, but that will only be 
> reported if it is a `BasicBugReport` (as implemented by 
> `PathSensitiveBugReporter::generateDiagnosticForConsumerMap`), otherwise it 
> should go through the graph cutting process etc.
> 
> So at the end of the day, the shortest path should appear still? 
> 
@balazske I spent a lot of my GSoC rewriting some especially miserable code in 
`BugReporter.cpp`, please hunt me down if you need any help there.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D83120



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

Reply via email to