https://github.com/steakhal commented:

Thank you for the ping. I'm really busy lately with stabilizing Z3 refutation.

I really liked the extensive evaluation, which helped a lot forming my opinion 
here.
The diffs look all right. I only spotchecked some places the reports. I agree 
with your evaluation.

The content of the patch looks also correct. I only found a couple Grammarly 
spellings, but that's it.
I wonder how you found out that loop widening may conflict with this heuristic, 
were any tests broken that raised your awareness?

I have one concern with `didEagerlyAssumeBifurcateAt`, that it is bound and 
overwritten at the most recent eager split - which to my knowledge may not be 
the loop condition if we have something like this:
```c++
while (coin()) {
  if (coin()) { // #inner_coin
    ++num;
  }
}
```
Each time the `inner_coin` would spoil the `LastEagerlyAssumeBifurcationAt` 
trait between the loop iterations, right?

Storing `const Expr *` pointers is brittle for recursive functions too, where 
the same expression could appear in different LocationContexts. I wonder if we 
could make an example where it would confuse this heuristic.

I'm also not entirely convinced about nested loops - if this heuristic would 
kick in. This is basically a variant of the `coin` case I showed an example.

I don't have a counter example just yet, but I'm not sure I can spare the time 
to craft one.

Once again, big kudos for the extensive data. And I have no objections overall, 
I only have these minor questions before I'd approve this.

https://github.com/llvm/llvm-project/pull/119388
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to