forked from OSchip/llvm-project
27 lines
769 B
C++
27 lines
769 B
C++
// 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<int Base::*>(reinterpret_cast<int Derived::*>(reinterpret_cast<int Base::*>(ddf)));
|
|
int Some::*sf = reinterpret_cast<int Some::*>(ddf);
|
|
Base base;
|
|
base.field = 13;
|
|
clang_analyzer_eval(base.*bf == 13); // expected-warning{{TRUE}}
|
|
}
|
|
} // namespace testReinterpretCasting
|