https://github.com/Xazax-hun approved this pull request.

Overall, I love it! I have some comments on some features in the future, but 
those are probably not going to be addressed any time soon. First of all, I 
think in the future when we reason about the values of the pointers, synthetic 
fields might need to have offsets to be able to know things like 
`&modeled.getField1() != &modeled.getField2()`. Offsets might also be a way to 
support unions, multiple synthetic fields starting at the same offset might 
express just that.

Another big item is properly supporting inheritance. Consider:
```
struct B { int a; };
struct D : /*virtual*/ B {};
struct E : /*virtual*/  B {};
struct F: D, E {
    void m() {
        int* l = &(D::a);
        int* m = &(E::a);
    }
};

``` 

Here, whether we have the same or different memory locations for `D::a` and 
`E::a` depends on whether we are doing virtual inheritance. This is something 
that should work both for regular fields and synthetic fields.

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

Reply via email to