-
Notifications
You must be signed in to change notification settings - Fork 76
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix handling of labels in unrolling & add possibility to run CIL checks on CFGs #896
Conversation
Do you have a list of these new unsound cases? Would be good to look into at least some of them to determine what's at fault and whether we will be able to do something about them any more after the tasks are frozen. The improvement is nice, but an additional 66 points won't move us up in the category rankings, but any unsound case will compromise our 1st place in the correctness ranking, which is not worth giving up. |
The unsound cases are all LDV-related, maybe you can have a look @sim642 since you looked into some similar ones as well.
At this point I am fairly convinced that the tasks are at fault, and would propose to merge this regardless (and in the worst case if we can not fix the benchmarks before keep the autotuner option for loop unrolling off for sv-comp). |
Iirc, if we find UB, we can still move to exclude those tasks, right? |
I looked up if any of those have been modified/have open MRs in sv-benchmarks and added links for those. It is possible to exclude tasks after freezing by proposing changes, but getting those merged is more difficult since "pull requests after deadline only merged after jury approval". |
c/ldv-linux-3.16-rc1/205_9a_array_unsafes_linux-3.16-rc1.tar.xz-205_9a-drivers--net--wan--hdlc_cisco.ko-entry_point.cil.out.i
Same reasoning:
|
I opened a new issue about these unsound cases to not block this PR. |
Co-authored-by: Simmo Saan <simmo.saan@gmail.com>
Our handling of labels when unrolling loops was still slightly off:
labelAlphaTable
, so there were collisions possible with labels defined outside the loop that is being unrolled, as we started from a fresh alpha table.goto
s from outside the CFG to point to statements that were not included in the current CFG anymore.To catch such issues early from now on, I added the option
dbg.run_cil_check
that causes CIL integrity checks to run and enabled them for our loop unrolling tests.TODO:
populateLabelAlphaTable
cil#121 and update pinsCloses #895