-
Notifications
You must be signed in to change notification settings - Fork 274
Value sets must not be field sensitive for unions #5713
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
Codecov Report
@@ Coverage Diff @@
## develop #5713 +/- ##
===========================================
- Coverage 69.51% 69.49% -0.02%
===========================================
Files 1243 1243
Lines 100695 100695
===========================================
- Hits 69994 69979 -15
- Misses 30701 30716 +15
Flags with carried forward coverage won't be shown. Click here to find out more.
Continue to review full report at Codecov.
|
It might be worth adding a comment in line 1286 to say that this case also covers unions. |
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.
Looks good to me. It makes sense to prioritise soundness over speed. Do you know how much of a performance difference this change makes? Do you have any ideas for doing field sensitivity for unions in a sound fashion?
Distinct fields in a union need not refer to distinct memory locations. Thus treat all fields of a union the same, with pointers assigned to any field being dereferenceable via another field. Fixes: diffblue#5263
I haven't seen a performance penalty so far, and have more far-reaching union-related changes in the queue that do improve performance for me. I believe that, at present, a fair comparison is not possible, because we're simply missing the right entries from the value set and thus performance is, well, rather arbitrary. Performance might even be improved by this patch, because pointers can now be dereferenced and symex can work with actual objects when previously we'd try to work with |
d5aee97
to
1b73ae5
Compare
Distinct fields in a union need not refer to distinct memory locations.
Thus treat all fields of a union the same, with pointers assigned to any
field being dereferenceable via another field.
Fixes: #5263