RedDocMD added a comment. @vsavchenko, after some experimentation, I found out that handling reinterpret_cast will be a real pain. Consider the following:
struct Base { int field; }; struct Derived : public Base {}; struct DoubleDerived : public Derived {}; struct Some {}; void f() { int DoubleDerived::* ddf = &Base::field; int Base::* bf = reinterpret_cast<int Base::*>(reinterpret_cast<int Derived::*>(reinterpret_cast<int Base::*>(ddf))); int Some::* sf = reinterpret_cast<int Some::*>(ddf); Base base; base.*bf; } The definition of `bf` can be handled I guess by manually discovering when to insert a sub-class or when to remove. It will require a bit of code but I guess is doable. As for the next one, also it has to be manually worked out whether it makes sense to process this statement further and add a node to the Exploded Graph. For the example I gave I don't think it makes a lot of sense. Multiple inheritance will make the task a lot worse as far as I can tell. Should I try to achieve this in another commit? What are your thoughts on this? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D95877/new/ https://reviews.llvm.org/D95877 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits