-
Notifications
You must be signed in to change notification settings - Fork 273
Maintain nondet and dynamic counters across symex instances [blocks: #3976] #3959
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
Conversation
tautschnig
commented
Jan 26, 2019
- Each commit message has a non-empty body, explaining why the change was made.
- n/a Methods or procedures I have added are documented, following the guidelines provided in CODING_STANDARD.md.
- n/a The feature or user visible behaviour I have added or modified has been documented in the User Guide in doc/cprover-manual/
- Regression or unit tests are included, or existing tests cover the modified code (in this case I have detailed which ones those are in the commit message).
- n/a My commit message includes data points confirming performance improvements (if claimed).
- My PR is restricted to a single feature or bugfix.
- n/a White-space or formatting changes outside the feature-related changed lines are in commits of their own.
bba27e4
to
93ac08f
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.
✔️
Passed Diffblue compatibility checks (cbmc commit: 93ac08f).
Build URL: https://travis-ci.com/diffblue/test-gen/builds/98729940
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.
Not for this PR, but maybe worth a performance test in future: Could util/fresh_symbol
do the job?
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.
I'm not sure why there would be several goto_symext
instantiations, which need to share symbols. But please don't introduce global variables.
src/goto-symex/goto_symex.h
Outdated
@@ -418,7 +408,7 @@ class goto_symext | |||
virtual void symex_input(statet &, const codet &); | |||
virtual void symex_output(statet &, const codet &); | |||
|
|||
symex_nondet_generatort build_symex_nondet; | |||
static unsigned nondet_count; |
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.
👎
cbmc --paths (
Ack, but that's just the first commit here, which is a clean revert of your earlier patch. The second commit fixes this. But I can probably also get away without doing that revert and just directly make the modifications done in the second commit. |
93ac08f
to
9f81b13
Compare
Use the path storage, which maintains state across different symex instantiations. While at it, also make the counters std::size_t as using limited bitwidth is not a meaningful optimisation here.
9f81b13
to
321402d
Compare
@romainbrenguier I have now largely redone this, avoiding any reverts. @peterschrammel I have followed your suggestion, and that change is now no longer present in here and #3999 takes care of it instead. |
Thanks for the explanation and sorry I didn't get this was fixed in the second commit, I think it's clearer without the revert. |
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.
✔️
Passed Diffblue compatibility checks (cbmc commit: 321402d).
Build URL: https://travis-ci.com/diffblue/test-gen/builds/99235044