uninit-variables.c revision c104e53639de4424b83955acfadc977773b5883d
1// RUN: %clang -Wuninitialized-experimental -fsyntax-only %s 2 3int test1() { 4 int x; 5 return x; // expected-warning{{use of uninitialized variable 'x'}} 6} 7 8int test2() { 9 int x = 0; 10 return x; // no-warning 11} 12 13int test3() { 14 int x; 15 x = 0; 16 return x; // no-warning 17} 18 19int test4() { 20 int x; 21 ++x; // expected-warning{{use of uninitialized variable 'x'}} 22 return x; 23} 24 25int test5() { 26 int x, y; 27 x = y; // expected-warning{{use of uninitialized variable 'y'}} 28 return x; 29} 30 31int test6() { 32 int x; 33 x += 2; // expected-warning{{use of uninitialized variable 'x'}} 34 return x; 35} 36 37int test7(int y) { 38 int x; 39 if (y) 40 x = 1; 41 return x; // expected-warning{{use of uninitialized variable 'x'}} 42} 43 44int test8(int y) { 45 int x; 46 if (y) 47 x = 1; 48 else 49 x = 0; 50 return x; // no-warning 51} 52 53int test9(int n) { 54 int x; 55 for (unsigned i = 0 ; i < n; ++i) { 56 if (i == n - 1) 57 break; 58 x = 1; 59 } 60 return x; // expected-warning{{use of uninitialized variable 'x'}} 61} 62 63int test10(unsigned n) { 64 int x; 65 for (unsigned i = 0 ; i < n; ++i) { 66 x = 1; 67 } 68 return x; // expected-warning{{use of uninitialized variable 'x'}} 69} 70 71int test11(unsigned n) { 72 int x; 73 for (unsigned i = 0 ; i <= n; ++i) { 74 x = 1; 75 } 76 return x; // expected-warning{{use of uninitialized variable 'x'}} 77} 78 79void test12(unsigned n) { 80 for (unsigned i ; n ; ++i) ; // expected-warning{{use of uninitialized variable 'i'}} 81} 82 83int test13() { 84 static int i; 85 return i; // no-warning 86} 87 88// Simply don't crash on this test case. 89void test14() { 90 const char *p = 0; 91 for (;;) {} 92} 93 94void test15() { 95 int x = x; // expected-warning{{use of uninitialized variable 'x'}} 96} 97 98// Don't warn in the following example; shows dataflow confluence. 99char *test16_aux(); 100void test16() { 101 char *p = test16_aux(); 102 for (unsigned i = 0 ; i < 100 ; i++) 103 p[i] = 'a'; // no-warning 104} 105