blob: 323fffebcdbef3862e302f3d53023c192deeee33 [file] [log] [blame]
Argyrios Kyrtzidisc4d2c902011-02-28 19:49:42 +00001// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-inline-call -analyzer-store region -verify %s
Argyrios Kyrtzidisb76fdf62011-02-19 01:08:37 +00002// XFAIL: *
Zhongxing Xu7ce351d2010-11-01 09:09:44 +00003
Zhongxing Xu40ab43b2010-04-20 05:48:57 +00004struct A {
5 int x;
6 A(int a) { x = a; }
Zhongxing Xu32303022010-11-24 13:48:50 +00007 int getx() const { return x; }
Zhongxing Xu40ab43b2010-04-20 05:48:57 +00008};
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
Zhongxing Xu0e38d5d2010-11-25 03:18:57 +000021void 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
Argyrios Kyrtzidisb76fdf62011-02-19 01:08:37 +000032void 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}