-
Notifications
You must be signed in to change notification settings - Fork 265
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
CONTRACTS: Dynamic frames for loop contracts #7541
Conversation
src/goto-instrument/contracts/dynamic-frames/dfcc_instrument.cpp
Outdated
Show resolved
Hide resolved
src/goto-instrument/contracts/dynamic-frames/dfcc_instrument.cpp
Outdated
Show resolved
Hide resolved
src/goto-instrument/contracts/dynamic-frames/dfcc_instrument.cpp
Outdated
Show resolved
Hide resolved
src/goto-instrument/contracts/dynamic-frames/dfcc_instrument.cpp
Outdated
Show resolved
Hide resolved
1118717
to
ec24b87
Compare
0872016
to
3119862
Compare
Codecov ReportPatch coverage:
Additional details and impacted files@@ Coverage Diff @@
## develop #7541 +/- ##
===========================================
+ Coverage 78.50% 78.55% +0.04%
===========================================
Files 1674 1686 +12
Lines 191955 192915 +960
===========================================
+ Hits 150699 151539 +840
- Misses 41256 41376 +120
☔ View full report in Codecov by Sentry. |
8e11d30
to
436679f
Compare
8b1f203
to
032ba46
Compare
032ba46
to
7954845
Compare
ed829cc
to
bb8fa2d
Compare
bb8fa2d
to
13f4850
Compare
Deduplication done |
src/goto-instrument/contracts/dynamic-frames/dfcc_loop_instrument.cpp
Outdated
Show resolved
Hide resolved
src/goto-instrument/contracts/dynamic-frames/dfcc_loop_instrument.h
Outdated
Show resolved
Hide resolved
src/goto-instrument/contracts/dynamic-frames/dfcc_loop_utils.cpp
Outdated
Show resolved
Hide resolved
src/goto-instrument/contracts/dynamic-frames/dfcc_loop_utils.cpp
Outdated
Show resolved
Hide resolved
src/goto-instrument/contracts/dynamic-frames/dfcc_loop_utils.cpp
Outdated
Show resolved
Hide resolved
src/goto-instrument/contracts/dynamic-frames/dfcc_loop_utils.cpp
Outdated
Show resolved
Hide resolved
src/goto-instrument/contracts/dynamic-frames/dfcc_loop_nesting_graph.h
Outdated
Show resolved
Hide resolved
src/goto-instrument/contracts/dynamic-frames/dfcc_loop_nesting_graph.h
Outdated
Show resolved
Hide resolved
433355e
to
e1f900a
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems ok to me except for the spurious debug
file.
regression/contracts-dfcc/invar_havoc_dynamic_multi-dim_array_all_const_idx/debug
Outdated
Show resolved
Hide resolved
src/goto-instrument/contracts/dynamic-frames/dfcc_contract_clauses_codegen.h
Outdated
Show resolved
Hide resolved
src/goto-instrument/contracts/dynamic-frames/dfcc_contract_functions.cpp
Outdated
Show resolved
Hide resolved
src/goto-instrument/contracts/dynamic-frames/dfcc_contract_functions.cpp
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM modulo Michael's comments.
src/goto-instrument/contracts/dynamic-frames/dfcc_spec_functions.h
Outdated
Show resolved
Hide resolved
src/goto-instrument/contracts/dynamic-frames/dfcc_instrument.cpp
Outdated
Show resolved
Hide resolved
Do not instrument code in `dfcc_spec_functionst` but rather one layer above in `dfcc_contract_functionst`. This allows to avoid creating a circular depedency on `dfcc_instrumentt` later.
e1f900a
to
56bf6c1
Compare
This PR adds support for loop contracts with dynamic frames.
The first two commits are from #7671 #7672, please review separately.
Fixes #7196
Fixes #7517
We modify the
dfcc_instrument
class to usedfcc_instrument_loopt
and apply loop contracts transformation at the same time as dynamic frame instrumentation, when the--apply-loop-contract-flag
is set.We also port the tests from the previous loop contracts implementation to the new one, and add some tests that combine loop contracts and recursive functions.