https://github.com/NagyDonat requested changes to this pull request.

Unfortunately I found several fundamental issues within the implementation of 
`extractActualValueFrom()` -- see inline comments for details.

Moreover I'm not convinced that this "replace `LazyCompoundVal`s with actual 
values" logic is the right approach for your goals.

When we discussed this yesterday, you told me that this logic was intended to 
handle the situations where a `LazyCompoundVal` represents a non-aggregate type 
(like an integer) -- but I think that we should catch that kind of 
non-canonical representation at an earlier point (e.g. within some `getSVal` 
method). Hiding an integer behind this kind of lazy wrapper is a serious defect 
of our store model which inhibits many operations -- not just `evalBinOp`.

On the other hand, this "replace `LazyCompoundVal`s with a better 
representation" approach could be a good idea in the cases when the 
`LazyCompoundVal` represents an aggregate. However in this case I don't think 
that you can get a non-lazy representation by simply selecting the right 
binding (either via `iterBinding`s or via a direct `getBinding` call) -- you 
will need to find or write an explicit "convert this `LazyCompoundVal` into a 
non-lazy `CompoundVal`" function.

https://github.com/llvm/llvm-project/pull/106982
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to