forked from OSchip/llvm-project
52 lines
1.1 KiB
C++
52 lines
1.1 KiB
C++
// RUN: %clang_cc1 -fsyntax-only -Wuninitialized-experimental -fsyntax-only %s -verify
|
|
|
|
int test1_aux(int &x);
|
|
int test1() {
|
|
int x;
|
|
test1_aux(x);
|
|
return x; // no-warning
|
|
}
|
|
|
|
int test2_aux() {
|
|
int x;
|
|
int &y = x;
|
|
return x; // no-warning
|
|
}
|
|
|
|
// Handle cases where the CFG may constant fold some branches, thus
|
|
// mitigating the need for some path-sensitivity in the analysis.
|
|
unsigned test3_aux();
|
|
unsigned test3() {
|
|
unsigned x = 0;
|
|
const bool flag = true;
|
|
if (flag && (x = test3_aux()) == 0) {
|
|
return x;
|
|
}
|
|
return x;
|
|
}
|
|
unsigned test3_b() {
|
|
unsigned x ;
|
|
const bool flag = true;
|
|
if (flag && (x = test3_aux()) == 0) {
|
|
x = 1;
|
|
}
|
|
return x; // no-warning
|
|
}
|
|
unsigned test3_c() {
|
|
unsigned x; // expected-note{{declared here}} expected-note{{add initialization}}
|
|
const bool flag = false;
|
|
if (flag && (x = test3_aux()) == 0) {
|
|
x = 1;
|
|
}
|
|
return x; // expected-warning{{variable 'x' is possibly uninitialized when used here}}
|
|
}
|
|
|
|
enum test4_A {
|
|
test4_A_a, test_4_A_b
|
|
};
|
|
test4_A test4() {
|
|
test4_A a; // expected-note{{variable 'a' is declared here}}
|
|
return a; // expected-warning{{variable 'a' is possibly uninitialized when used here}}
|
|
}
|
|
|