// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s struct A { int a; struct { struct { int b; union { int c; }; }; }; }; int testCrash() { int *x = 0; int A::*ap = &A::a; if (ap) // no crash return *x; // expected-warning{{Dereference of null pointer (loaded from variable 'x')}} return 10; } int testIndirectCrash() { int *x = 0; int A::*cp = &A::c; if (cp) // no crash return *x; // expected-warning{{Dereference of null pointer (loaded from variable 'x')}} return 10; } // PR46264 // This case shall not crash with an assertion failure about void* dereferening. namespace ns1 { namespace a { class b { public: typedef int b::*c; operator c() { return d ? &b::d : 0; } int d; }; } // namespace a using a::b; class e { void f(); void g(); b h; }; void e::f() { e *i; if (h) i->g(); // expected-warning{{Called C++ object pointer is uninitialized}} } } // namespace ns1