Skip to content

Perform remove_returns pass before constant_propagator #7105

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

Merged
merged 3 commits into from
Sep 7, 2022

Conversation

thomasspriggs
Copy link
Contributor

The constant_propagator does not handle returns and gives unexpected
results for examples including returns. Carrying out the remove_returns
pass before contant propagation should resolve this issue.

This relates to #7041

  • 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.

The constant_propagator does not handle returns and gives unexpected
results for examples including returns. Carrying out the remove_returns
pass before contant propagation should resolve this issue.
Copy link
Collaborator

@martin-cs martin-cs left a comment

Choose a reason for hiding this comment

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

Yes but really I would suggest using goto-analyzer for constant propagation:

goto-analyzer test --simplify test1 --vsd --vsd-value constants

#7041 (comment)

@@ -1285,6 +1285,7 @@ void goto_instrument_parse_optionst::instrument_goto_program()
if(cmdline.isset("constant-propagator"))
{
do_indirect_call_and_rtti_removal();
remove_returns(goto_model);
Copy link
Collaborator

Choose a reason for hiding this comment

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

Please use do_remove_returns() instead.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done.

@codecov
Copy link

codecov bot commented Sep 6, 2022

Codecov Report

Merging #7105 (e4ef59e) into develop (2ea8ee8) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@           Coverage Diff            @@
##           develop    #7105   +/-   ##
========================================
  Coverage    77.87%   77.87%           
========================================
  Files         1576     1576           
  Lines       181588   181589    +1     
========================================
+ Hits        141413   141415    +2     
+ Misses       40175    40174    -1     
Impacted Files Coverage Δ
.../goto-instrument/goto_instrument_parse_options.cpp 71.07% <100.00%> (+0.03%) ⬆️
src/analyses/constant_propagator.cpp 95.46% <0.00%> (+0.32%) ⬆️

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

This ensures that this pass is done only once and is shown in the
logging.
@thomasspriggs
Copy link
Contributor Author

@tautschnig Can you re-review this please?

Copy link
Member

@peterschrammel peterschrammel left a comment

Choose a reason for hiding this comment

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

Good as a partial workaround. Eventually, the constant propgator should be replaced by functionality from goto-analyzer, as @martin-cs suggests.

@tautschnig tautschnig merged commit 1a4bd38 into diffblue:develop Sep 7, 2022
@thomasspriggs thomasspriggs deleted the tas/const-prop-returns branch September 7, 2022 13:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants