vsavchenko added a comment. In D95877#2542578 <https://reviews.llvm.org/D95877#2542578>, @RedDocMD wrote:
> @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? Yes, another commit is fine. However, I'd say that it is still good to add test cases with TODOs with this commit. ================ Comment at: clang/lib/StaticAnalyzer/Core/BasicValueFactory.cpp:27 #include <cstdint> +#include <list> #include <utility> ---------------- We don't need this anymore :) 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