method-call.cpp revision b76fdf69df5f35c3af9ebe3afc72b0d3c9bf76e7
1// RUN: %clang_cc1 -analyze -analyzer-check-objc-mem -analyzer-inline-call -analyzer-store region -verify %s 2// XFAIL: * 3 4struct A { 5 int x; 6 A(int a) { x = a; } 7 int getx() const { return x; } 8}; 9 10void f1() { 11 A x(3); 12 if (x.getx() == 3) { 13 int *p = 0; 14 *p = 3; // expected-warning{{Dereference of null pointer}} 15 } else { 16 int *p = 0; 17 *p = 3; // no-warning 18 } 19} 20 21void f2() { 22 const A &x = A(3); 23 if (x.getx() == 3) { 24 int *p = 0; 25 *p = 3; // expected-warning{{Dereference of null pointer}} 26 } else { 27 int *p = 0; 28 *p = 3; // no-warning 29 } 30} 31 32void f3() { 33 const A &x = (A)3; 34 if (x.getx() == 3) { 35 int *p = 0; 36 *p = 3; // expected-warning{{Dereference of null pointer}} 37 } else { 38 int *p = 0; 39 *p = 3; // no-warning 40 } 41} 42