brintos

brintos / llvm-project-archived public Read only

0
0
Text · 769 B · c457d22 Raw
27 lines · cpp
1// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -verify %s2// XFAIL: asserts3 4void clang_analyzer_eval(bool);5 6// TODO: The following test will work properly once reinterpret_cast on pointer-to-member is handled properly7namespace testReinterpretCasting {8struct Base {9  int field;10};11 12struct Derived : public Base {};13 14struct DoubleDerived : public Derived {};15 16struct Some {};17 18void f() {19  int DoubleDerived::*ddf = &Base::field;20  int Base::*bf = reinterpret_cast<int Base::*>(reinterpret_cast<int Derived::*>(reinterpret_cast<int Base::*>(ddf)));21  int Some::*sf = reinterpret_cast<int Some::*>(ddf);22  Base base;23  base.field = 13;24  clang_analyzer_eval(base.*bf == 13); // expected-warning{{TRUE}}25}26} // namespace testReinterpretCasting27