Limit unrolling to specific loops and arrays to make it applicable to larger programs #643
Closed
3 tasks done
Labels
Milestone
With #577 and #563 now merged, we now have the ability to unroll all loops k times and all arrays l times. Often, just unrolling everything will be expensive though and also not be too beneficial when it comes to precision, as it may just add precision in cases we don't care about.
Instead, it would be nice to be able to unroll just some loops and arrays (e.g. by providing an
should_be_unrolled
predicate).Possible use cases would be:
pthread_t[20]
it would be worth unrolling the array and all loops that use it (potentially even up to a length of20
) if we are interested in race detection to benefit from better MHP information. The same probably goes formalloc(...)
in such loops, as having more distinct heap locations may also be helpful here.The nice thing here that one can not go wrong when deciding what to unroll, the analysis remains sound even if one comically wrong choices.
Changes that would be necessary to achieve this:
should_be_unrolled
predicate (e.g. annotations, heuristics, ...)The text was updated successfully, but these errors were encountered: