Skip to content

Field sensitivity: fully expand nested objects #7472

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 1 commit into from
Jan 11, 2023

Conversation

tautschnig
Copy link
Collaborator

When applying field sensitivity to an expression we must expand all levels. In the included test we previously constructed a member symbol (var_11..value) as right-hand side that still was of struct type. Instead, we must create a struct expression composed of all its members (here: { var_11..value.._0 }).

Also, we must not keep nested expandable members in the propagation map for phi nodes don't merge on them.

Fixes: #7462

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

@codecov
Copy link

codecov bot commented Jan 11, 2023

Codecov Report

Base: 78.48% // Head: 78.48% // Decreases project coverage by -0.00% ⚠️

Coverage data is based on head (1658ee4) compared to base (7a9398d).
Patch coverage: 43.24% of modified lines in pull request are covered.

❗ Current head 1658ee4 differs from pull request most recent head ad8086f. Consider uploading reports for the commit ad8086f to get more accurate results

Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #7472      +/-   ##
===========================================
- Coverage    78.48%   78.48%   -0.01%     
===========================================
  Files         1663     1663              
  Lines       191151   191180      +29     
===========================================
+ Hits        150032   150039       +7     
- Misses       41119    41141      +22     
Impacted Files Coverage Δ
src/ansi-c/c_typecheck_expr.cpp 76.06% <ø> (ø)
src/ansi-c/expr2c_class.h 100.00% <ø> (ø)
src/goto-symex/symex_assign.cpp 81.15% <ø> (-0.41%) ⬇️
src/util/pointer_expr.h 96.72% <0.00%> (-2.32%) ⬇️
src/ansi-c/expr2c.cpp 67.71% <7.69%> (-0.37%) ⬇️
src/goto-symex/field_sensitivity.cpp 93.28% <83.33%> (+0.24%) ⬆️

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

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.

When applying field sensitivity to an expression we must expand all
levels. In the included test we previously constructed a member symbol
(`var_11..value`) as right-hand side that still was of struct type.
Instead, we must create a struct expression composed of all its members
(here: `{ var_11..value.._0 }`).

Also, we must not keep nested expandable members in the propagation map
for phi nodes don't merge on them.

Fixes: diffblue#7462
@tautschnig tautschnig force-pushed the bugfixes/fs-recursive branch from 1658ee4 to ad8086f Compare January 11, 2023 09:04
@peterschrammel peterschrammel removed their assignment Jan 11, 2023
@tautschnig tautschnig assigned tautschnig and unassigned kroening Jan 11, 2023
@tautschnig tautschnig merged commit 87e992b into diffblue:develop Jan 11, 2023
@tautschnig tautschnig deleted the bugfixes/fs-recursive branch January 11, 2023 10:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
aws-high bugfix Kani Bugs or features of importance to Kani Rust Verifier
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Discrepancy between CBMC versions
3 participants