-
Notifications
You must be signed in to change notification settings - Fork 284
Vsd meet and assume #6023
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
Vsd meet and assume #6023
Conversation
eeaaee8 to
1614d74
Compare
|
MacOS build failures look to be a meta-problem getting the tool dependencies |
|
Paging @NlightNFotis and @thomasspriggs for the Mac OS CI issues. |
|
I took a quick look at it - in the beginning I thought that they upgraded the version so it's hitting the wrong URL because of outdated database issues (kind of like needing an apt-get update, if you want). But it looks like it's still the same version of the formula (https://formulae.brew.sh/formula/ninja), and it's 403 if you hit the URL, which seems to be sitting on their servers, so I'm assuming this must be a temporary issue they are having. Could you try it again (just restart the jobs from the github interface) later, and let me know if it doesn't work? I'll take a deeper look at it then. |
Codecov Report
@@ Coverage Diff @@
## develop #6023 +/- ##
===========================================
+ Coverage 67.40% 75.42% +8.01%
===========================================
Files 1157 1454 +297
Lines 95236 159739 +64503
===========================================
+ Hits 64197 120477 +56280
- Misses 31039 39262 +8223
Flags with carried forward coverage won't be shown. Click here to find out more.
Continue to review full report at Codecov.
|
1614d74 to
918f68d
Compare
For the record: actions/runner-images#3165 - presumably the current run will have updated runners already. |
93848ac to
83414be
Compare
2492245 to
ba7d4b9
Compare
ba7d4b9 to
da1e973
Compare
da1e973 to
f191b3c
Compare
martin-cs
left a comment
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.
In principle happy but there are a few details to check.
53134d6 to
b427be5
Compare
Seperates the assume evaluation from the action arising.
This is the first step on splitting out assume so we can given sensible answers for all value representations, not just constants.
Consider cases when one or other operand is not a value, or is unknown. Implement meet for write_location_context.
For intervals and value-sets it's possible for, say, (a > b) and !(a > b) to both be true. When evaluationing !(expr) we can't simply flip the result. Instead, where we can, we need to rewrite !(a > b) as (a <= b) and evaluate that instead.
We can bail out early if an operand evals to false. Otherwise we must evaluate al lthe operands, so that any pruning is applied. That done, we return true iff all operands are true, otherwise we return nil if anywhere nil.
Implemented for intervals and value-sets which are not top.
These operations are symmetric, so we can rewrite x > y as y < x, and x >= y as y <= x. As a consequence of rewriting, greater than assumptions now also prune.
Remove duplication in data_dependency & write_location merge and meet. Correct data_dependency_contextt:: has_been_modified to verify child object is also unchanged
Found and fixed a problem in interval_abstract_value::to_constant(), for case when interval is a valid single value, but the whole thing is also top. This could arise in a merge of, say, [0, 0] and TOP.
371936f to
b23e00d
Compare
Two related strands of work in this PR.
Extending
abstract_environmentt::assumeto cover all value representations. Up until now,assumewas only correct for constants. It may have evaluated a given expression correctly for intervals and value-sets, but not reliably. These changes all assume expressions to be properly evaluated for all value representation, and in the face of different representations within the same expression.Filling out the implementation of
abstract_objectt::meetfor value representations. Wheremergeis the union of two values,meetis the intersection.meetis used when evaluating an assumed equality expression.+2,331/-384 looks alarming, but the major bulk of that is test cases exercising various combinations of constants, intervals, value-sets, and operators in assume and in meet.