// 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
