• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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;
AA6   A(int a) { x = a; }
getxA7   int getx() const { return x; }
8 };
9 
f1()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 
f2()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 
f3()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