-
Notifications
You must be signed in to change notification settings - Fork 273
Make DFCC is_dead_object_update less restrictive #8261
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
Make DFCC is_dead_object_update less restrictive #8261
Conversation
GOTO programs are free to use different ways to assign to `__CPROVER_dead_object`. Any such assignment that does not match the expected pattern can then safely be ignored.
@remi-delmas-3000 Why are we tracking |
The use of From the point of view of frame condition checking, not failing on an assignment to a dead object is unsound, so instead of having a soundness hole in the contracts instrumentation and defaulting to the underlying CBMC checks for such cases, I chose to error out when instrumenting any assignment to |
Ah, thank you for explaining why looking at |
|
We could indeed encapsulate this in a (library) function, but either way it will remain an implementation detail of the C front-end. Eventually Kani will create its own tracking variable for Rust checks. Either way, I think this is out of scope for this PR? |
GOTO programs are free to use different ways to assign to
__CPROVER_dead_object
. Any such assignment that does not match the expected pattern can then safely be ignored.