When working with optimizations on widenable condition, a misscompile bug was found.
@mkazantsev tried to fix the bug by limiting one of the transforms, but this transforms is a weird, but a legal form of guard widening. He doesn't have strong enough ground to disable it.
So maybe the only way to break the infinite loop here is just to break while-loop after N iterations.
Link to Maxim's patch https://reviews.llvm.org/D112693
Details
Details
- Reviewers
mkazantsev
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Unit Tests
Unit Tests
Time | Test | |
---|---|---|
60 ms | x64 debian > LLVM.Bindings/Go::go.test |
Event Timeline
Comment Actions
I updated this patch. Updated old test written by Max Kazantsev.
Need I wrote one more test for my patch?
Comment Actions
Please rewrite commit message here to make it clear what's going on.
The point here is that I tried to fix the hang by limiting one of the transforms. But as it was pointed out on review, this transform is a weird, but legal form of guard widening. So I don't have strong enough ground to disable it.
On the other hand, there are 3 unrelated transforms described in D112693 that lead to infinite loop.
I can' say either of them is illegal, and there is no clear invariant set that one of them would break. So maybe the only way to break the infinite loop here is just to break while-loop after N interations.