Skip to content

Only convert not-yet-converted SSA steps #4065

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

peterschrammel
Copy link
Member

Necessary to enable incremental extension and conversion of the symex target equation during incremental unwinding. This also works in combination with slice.

  • Each commit message has a non-empty body, explaining why the change was made.
  • Methods or procedures I have added are documented, following the guidelines provided in CODING_STANDARD.md.
  • 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).
  • My commit message includes data points confirming performance improvements (if claimed).
  • My PR is restricted to a single feature or bugfix.
  • White-space or formatting changes outside the feature-related changed lines are in commits of their own.

{
if(step.is_assignment() && !step.ignore)
if(step.is_assignment() && !step.ignore && !step.converted)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of adding this info to every step, would it be more efficient to store a conversion frontier as a single iterator member? The current implementation increases the storage size of each SSA_stept and requires repeated traversal of steps have have been seen before. With an optionalt<SSA_stepst::const_iterator> we would just store a pointer to the last converted step.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is no conversion frontier due to slicing.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, of course.

Necessary to enable incremental extension of the
symex target equation during incremental unwinding.
This also works in combination with `slice`.
@peterschrammel peterschrammel force-pushed the incremental-equation-conversion branch from 5770ae7 to fe72c88 Compare February 4, 2019 15:52
Copy link
Contributor

@allredj allredj left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚫
This PR failed Diffblue compatibility checks (cbmc commit: fe72c88).
Build URL: https://travis-ci.com/diffblue/test-gen/builds/99663571
Status will be re-evaluated on next push.
Please contact @peterschrammel, @thk123, or @allredj for support.

Common spurious failures:

  • the cbmc commit has disappeared in the mean time (e.g. in a force-push)
  • the author is not in the list of contributors (e.g. first-time contributors).

The incompatibility may have been introduced by an earlier PR. In that case merging this
PR should be avoided unless it fixes the current incompatibility.

@kroening
Copy link
Member

kroening commented Feb 5, 2019

Does it make sense to drop the symex_target container for the incremental use case, and pass directly to the solver?

@peterschrammel
Copy link
Member Author

How would build_goto_trace work then?

@peterschrammel peterschrammel merged commit 6f692d7 into diffblue:develop Feb 7, 2019
@peterschrammel peterschrammel deleted the incremental-equation-conversion branch February 7, 2019 15:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants