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
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits