forked from OSchip/llvm-project
Now that the analyzer is distinguishing between uninitialized uses that
definitely have a path leading to them, and possibly have a path leading to them; reflect that distinction in the warning text emitted. llvm-svn: 129126
This commit is contained in:
parent
33984c6973
commit
278f89732f
|
@ -874,7 +874,8 @@ def warn_field_is_uninit : Warning<"field is uninitialized when used here">,
|
|||
def warn_uninit_self_reference_in_init : Warning<
|
||||
"variable %0 is uninitialized when used within its own initialization">,
|
||||
InGroup<Uninitialized>;
|
||||
def warn_uninit_var : Warning<"variable %0 is possibly uninitialized when used here">,
|
||||
def warn_uninit_var : Warning<
|
||||
"variable %0 is uninitialized when used here">,
|
||||
InGroup<Uninitialized>, DefaultIgnore;
|
||||
def warn_maybe_uninit_var :
|
||||
Warning<"variable %0 is possibly uninitialized when used here">,
|
||||
|
@ -882,7 +883,7 @@ def warn_maybe_uninit_var :
|
|||
def note_uninit_var_def : Note<
|
||||
"variable %0 is declared here">;
|
||||
def warn_uninit_var_captured_by_block : Warning<
|
||||
"variable %0 is possibly uninitialized when captured by block">,
|
||||
"variable %0 is uninitialized when captured by block">,
|
||||
InGroup<Uninitialized>, DefaultIgnore;
|
||||
def warn_maybe_uninit_var_captured_by_block : Warning<
|
||||
"variable %0 is possibly uninitialized when captured by block">,
|
||||
|
|
|
@ -7,10 +7,10 @@ __m128 _mm_loadu_ps(const float *p);
|
|||
|
||||
void test1(float *input) {
|
||||
__m128 x, y, z, w, X; // expected-note {{variable 'x' is declared here}} expected-note {{variable 'y' is declared here}} expected-note {{variable 'w' is declared here}} expected-note {{variable 'z' is declared here}}
|
||||
x = _mm_xor_ps(x,x); // expected-warning {{variable 'x' is possibly uninitialized when used here}}
|
||||
y = _mm_xor_ps(y,y); // expected-warning {{variable 'y' is possibly uninitialized when used here}}
|
||||
z = _mm_xor_ps(z,z); // expected-warning {{variable 'z' is possibly uninitialized when used here}}
|
||||
w = _mm_xor_ps(w,w); // expected-warning {{variable 'w' is possibly uninitialized when used here}}
|
||||
x = _mm_xor_ps(x,x); // expected-warning {{variable 'x' is uninitialized when used here}}
|
||||
y = _mm_xor_ps(y,y); // expected-warning {{variable 'y' is uninitialized when used here}}
|
||||
z = _mm_xor_ps(z,z); // expected-warning {{variable 'z' is uninitialized when used here}}
|
||||
w = _mm_xor_ps(w,w); // expected-warning {{variable 'w' is uninitialized when used here}}
|
||||
X = _mm_loadu_ps(&input[0]);
|
||||
X = _mm_xor_ps(X,X); // no-warning
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
int test1() {
|
||||
int x; // expected-note{{variable 'x' is declared here}} expected-note{{add initialization to silence this warning}}
|
||||
return x; // expected-warning{{variable 'x' is possibly uninitialized when used here}}
|
||||
return x; // expected-warning{{variable 'x' is uninitialized when used here}}
|
||||
}
|
||||
|
||||
int test2() {
|
||||
|
@ -18,19 +18,19 @@ int test3() {
|
|||
|
||||
int test4() {
|
||||
int x; // expected-note{{variable 'x' is declared here}} expected-note{{add initialization to silence this warning}}
|
||||
++x; // expected-warning{{variable 'x' is possibly uninitialized when used here}}
|
||||
++x; // expected-warning{{variable 'x' is uninitialized when used here}}
|
||||
return x;
|
||||
}
|
||||
|
||||
int test5() {
|
||||
int x, y; // expected-note{{variable 'y' is declared here}} expected-note{{add initialization to silence this warning}}
|
||||
x = y; // expected-warning{{variable 'y' is possibly uninitialized when used here}}
|
||||
x = y; // expected-warning{{variable 'y' is uninitialized when used here}}
|
||||
return x;
|
||||
}
|
||||
|
||||
int test6() {
|
||||
int x; // expected-note{{variable 'x' is declared here}} expected-note{{add initialization to silence this warning}}
|
||||
x += 2; // expected-warning{{variable 'x' is possibly uninitialized when used here}}
|
||||
x += 2; // expected-warning{{variable 'x' is uninitialized when used here}}
|
||||
return x;
|
||||
}
|
||||
|
||||
|
@ -94,7 +94,7 @@ void test14() {
|
|||
int test15() {
|
||||
int x = x; // no-warning: signals intended lack of initialization. \
|
||||
// expected-note{{variable 'x' is declared here}}
|
||||
return x; // expected-warning{{variable 'x' is possibly uninitialized when used here}}
|
||||
return x; // expected-warning{{variable 'x' is uninitialized when used here}}
|
||||
}
|
||||
|
||||
// Don't warn in the following example; shows dataflow confluence.
|
||||
|
@ -109,7 +109,7 @@ void test17() {
|
|||
// Don't warn multiple times about the same uninitialized variable
|
||||
// along the same path.
|
||||
int *x; // expected-note{{variable 'x' is declared here}} expected-note{{add initialization to silence this warning}}
|
||||
*x = 1; // expected-warning{{variable 'x' is possibly uninitialized when used here}}
|
||||
*x = 1; // expected-warning{{variable 'x' is uninitialized when used here}}
|
||||
*x = 1; // no-warning
|
||||
}
|
||||
|
||||
|
@ -174,13 +174,13 @@ int test24(int flag) {
|
|||
|
||||
float test25() {
|
||||
float x; // expected-note{{variable 'x' is declared here}} expected-note{{add initialization to silence this warning}}
|
||||
return x; // expected-warning{{variable 'x' is possibly uninitialized when used here}}
|
||||
return x; // expected-warning{{variable 'x' is uninitialized when used here}}
|
||||
}
|
||||
|
||||
typedef int MyInt;
|
||||
MyInt test26() {
|
||||
MyInt x; // expected-note{{variable 'x' is declared here}} expected-note{{add initialization to silence this warning}}
|
||||
return x; // expected-warning{{variable 'x' is possibly uninitialized when used here}}
|
||||
return x; // expected-warning{{variable 'x' is uninitialized when used here}}
|
||||
}
|
||||
|
||||
// Test handling of sizeof().
|
||||
|
@ -191,12 +191,12 @@ int test27() {
|
|||
|
||||
int test28() {
|
||||
int len; // expected-note{{variable 'len' is declared here}} expected-note{{add initialization to silence this warning}}
|
||||
return sizeof(int[len]); // expected-warning{{variable 'len' is possibly uninitialized when used here}}
|
||||
return sizeof(int[len]); // expected-warning{{variable 'len' is uninitialized when used here}}
|
||||
}
|
||||
|
||||
void test29() {
|
||||
int x; // expected-note{{variable 'x' is declared here}} expected-note{{add initialization to silence this warning}}
|
||||
(void) ^{ (void) x; }; // expected-warning{{variable 'x' is possibly uninitialized when captured by block}}
|
||||
(void) ^{ (void) x; }; // expected-warning{{variable 'x' is uninitialized when captured by block}}
|
||||
}
|
||||
|
||||
void test30() {
|
||||
|
@ -222,7 +222,7 @@ void test_33() {
|
|||
int test_34() {
|
||||
int x; // expected-note{{variable 'x' is declared here}} expected-note{{add initialization to silence this warning}}
|
||||
(void) x;
|
||||
return x; // expected-warning{{variable 'x' is possibly uninitialized when used here}}
|
||||
return x; // expected-warning{{variable 'x' is uninitialized when used here}}
|
||||
}
|
||||
|
||||
// Test that this case doesn't crash.
|
||||
|
@ -264,14 +264,14 @@ int test38(int r, int x, int y)
|
|||
|
||||
int test39(int x) {
|
||||
int y; // expected-note {{variable 'y' is declared here}} expected-note{{add initialization to silence this warning}}
|
||||
int z = x + y; // expected-warning {{variable 'y' is possibly uninitialized when used here}}
|
||||
int z = x + y; // expected-warning {{variable 'y' is uninitialized when used here}}
|
||||
return z;
|
||||
}
|
||||
|
||||
|
||||
int test40(int x) {
|
||||
int y; // expected-note {{variable 'y' is declared here}} expected-note{{add initialization to silence this warning}}
|
||||
return x ? 1 : y; // expected-warning {{variable 'y' is possibly uninitialized when used here}}
|
||||
return x ? 1 : y; // expected-warning {{variable 'y' is uninitialized when used here}}
|
||||
}
|
||||
|
||||
int test41(int x) {
|
||||
|
@ -311,7 +311,7 @@ int test45(int j) {
|
|||
void test46()
|
||||
{
|
||||
int i; // expected-note {{variable 'i' is declared here}} expected-note{{add initialization to silence this warning}}
|
||||
int j = i ? : 1; // expected-warning {{variable 'i' is possibly uninitialized when used here}}
|
||||
int j = i ? : 1; // expected-warning {{variable 'i' is uninitialized when used here}}
|
||||
}
|
||||
|
||||
void *test47(int *i)
|
||||
|
|
|
@ -38,7 +38,7 @@ unsigned test3_c() {
|
|||
if (flag && (x = test3_aux()) == 0) {
|
||||
x = 1;
|
||||
}
|
||||
return x; // expected-warning{{variable 'x' is possibly uninitialized when used here}}
|
||||
return x; // expected-warning{{variable 'x' is uninitialized when used here}}
|
||||
}
|
||||
|
||||
enum test4_A {
|
||||
|
@ -46,7 +46,7 @@ enum test4_A {
|
|||
};
|
||||
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}}
|
||||
return a; // expected-warning{{variable 'a' is uninitialized when used here}}
|
||||
}
|
||||
|
||||
// This test previously crashed Sema.
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
// Test just to ensure the analysis is working.
|
||||
int test1() {
|
||||
int x; // expected-note{{variable 'x' is declared here}} expected-note{{add initialization}}
|
||||
return x; // expected-warning{{variable 'x' is possibly uninitialized when used here}}
|
||||
return x; // expected-warning{{variable 'x' is uninitialized when used here}}
|
||||
}
|
||||
|
||||
// Test ObjC fast enumeration.
|
||||
|
|
Loading…
Reference in New Issue