Improve loop bound detection for loop unrolling by handling casts in loop statements #1599
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Inspired by an
unreach-call
tasknum_conversion_1.c
where we couldn't detect a bound for the following loop:Unrolling the loop 8 times here helps us solve the task. In addition to the case in this program, where the loop statement is in the form
CastE(TInt(int, ), Lval(Var(c, NoOffset))) < Const(Int(8,int,None))
I included all possible combinations of casting for both the left and right expressions in the loop comparison statement.