<div dir="ltr"><div>Hi all,</div><div><br></div><div>LazyValueInfo seems overly conservative by not even looking at a value it set to overdefined, solved its LHS, and then came back to.</div><div><br></div><div>The oneliner lvi-solve-overdef.diff makes it look at overdefined values again. It seems broken though, especially with the comment a few lines down saying that it sets it to overdefined "so that cycles will terminate and be conservatively correct.”</div>

<div><br></div><div>From what I read though, if a value is a binop, LVI will look at the LHS, figure out its lattice value, and then tell you that the binop is overdefined, even though at this point all the needed information is there. </div>

<div><br></div><div>In my (limited) testing, this helps, and doesn’t seem to break anything. Insights welcome!</div><div><br></div><div><br></div><div>The other patch exposes the constant range when available, which, even though limited, can be very useful.</div>

<div><br></div><div>Thanks,</div><div><br></div><div>-- Ahmed Bougacha</div>
</div>