You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It turns out there is a (unrelated), but quite surprising difference where for one program eval_rv returns VD: Int (ID.top_of ik) vs. VD: Int (ID.bot ()) for the other:
For the first program, the evaluation produces Int (ID.bot ()), which does not trigger the check for VD.is_bot r and eval_rv returns Int (ID.bot ()).
For the second program, eval_rv triggers an IntDomain.ArithmeticOnIntegerBot exception when evaluating the BinOp, which results in the value Int (ID.top_of ik)) for the appropriate ik.
In branch, neither of these values evaluate to a definite bool, so refine is called either way, but still this discrepancy is a little worrying.
The text was updated successfully, but these errors were encountered:
While looking at #1696, I started wondering why for
we produce a warning that both branches are dead, while we do not do so for
which is an equivalent program.
It turns out there is a (unrelated), but quite surprising difference where for one program
eval_rv
returnsVD: Int (ID.top_of ik)
vs.VD: Int (ID.bot ())
for the other:analyzer/src/analyses/base.ml
Lines 1102 to 1109 in b90ee73
Int (ID.bot ())
, which does not trigger the check forVD.is_bot r
andeval_rv
returnsInt (ID.bot ())
.eval_rv
triggers anIntDomain.ArithmeticOnIntegerBot
exception when evaluating the BinOp, which results in the valueInt (ID.top_of ik))
for the appropriateik
.In
branch
, neither of these values evaluate to a definitebool
, sorefine
is called either way, but still this discrepancy is a little worrying.The text was updated successfully, but these errors were encountered: