rdar://77686137
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Dam, we will be always haunted by these.
Looks good btw.
The test looks somewhat artificial - like a raw creduce result.
Do you think It worth the effort to make it look like it was written by a human?
I also somewhy prefer function parameters to globals for this specific use-case.
This seems to depend on the -analyzer-config eagerly-assume=true. We should probably add this option explicitly, just in case.
Yep, it was one place where we didn't expect a null state, but after one of the later patches, it became possible. π€it's the final one.
Looks good btw.
The test looks somewhat artificial - like a raw creduce result.Do you think It worth the effort to make it look like it was written by a human?
OK, I tried. and surprisingly I couldn't transform c == b into a condition, so it crashes. While it's interesting why exactly this happens, I don't think that it's worth it (in this particular case).
I also somewhy prefer function parameters to globals for this specific use-case.
β
This seems to depend on the -analyzer-config eagerly-assume=true. We should probably add this option explicitly, just in case.
β
Well, that's interesting. It might worth investigating. @NoQ ?
Regardless, it's an improvement, let's land it :D
Thx for the fix!
At a glance it looks like this has something to do with liveness. When c == b is surrounded by an if-statement, the CFG starts having more blocks and live variables analysis becomes more fine-grained and constraints for 'b' get cleaned up more quickly. Which is bad because this means that we're cleaning up constraints that are still useful.