Home | History | Annotate | Download | only in Analysis
      1 // RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-inline-call -analyzer-store region -verify %s
      2 // XFAIL: *
      3 
      4 struct A {
      5   int x;
      6   A(int a) { x = a; }
      7   int getx() const { return x; }
      8 };
      9 
     10 void 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 
     21 void 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 
     32 void 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