blob: 0d6920ceb3955a4efbc74a43ee38a6d5757633ed [file] [log] [blame]
Ted Kremenekc21fed32011-01-18 21:18:58 +00001// RUN: %clang_cc1 -fsyntax-only -Wuninitialized-experimental -fsyntax-only %s -verify
2
3int test1_aux(int &x);
4int test1() {
5 int x;
6 test1_aux(x);
7 return x; // no-warning
8}
9
10int test2_aux() {
11 int x;
12 int &y = x;
13 return x; // no-warning
14}
15
Ted Kremenek2d4bed12011-01-20 21:25:31 +000016// Handle cases where the CFG may constant fold some branches, thus
17// mitigating the need for some path-sensitivity in the analysis.
18unsigned test3_aux();
19unsigned test3() {
20 unsigned x = 0;
21 const bool flag = true;
22 if (flag && (x = test3_aux()) == 0) {
23 return x;
24 }
25 return x;
26}
27unsigned test3_b() {
28 unsigned x ;
29 const bool flag = true;
30 if (flag && (x = test3_aux()) == 0) {
31 x = 1;
32 }
33 return x; // no-warning
34}
35unsigned test3_c() {
36 unsigned x ;
37 const bool flag = false;
38 if (flag && (x = test3_aux()) == 0) {
39 x = 1;
40 }
41 return x; // expected-warning{{use of uninitialized variable 'x'}}
42}
43