// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -verify %s // XFAIL: asserts void clang_analyzer_eval(bool); // TODO: The following test will work properly once reinterpret_cast on pointer-to-member is handled properly namespace testReinterpretCasting { 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(reinterpret_cast(reinterpret_cast(ddf))); int Some::*sf = reinterpret_cast(ddf); Base base; base.field = 13; clang_analyzer_eval(base.*bf == 13); // expected-warning{{TRUE}} } } // namespace testReinterpretCasting