| // RUN: clang-cc -analyze -warn-uninit-values -verify %s |
| |
| int f1() { |
| int x; |
| return x; // expected-warning {{use of uninitialized variable}} |
| } |
| |
| int f2(int x) { |
| int y; |
| int z = x + y; // expected-warning {{use of uninitialized variable}} |
| return z; |
| } |
| |
| |
| int f3(int x) { |
| int y; |
| return x ? 1 : y; // expected-warning {{use of uninitialized variable}} |
| } |
| |
| int f4(int x) { |
| int y; |
| if (x) y = 1; |
| return y; // expected-warning {{use of uninitialized variable}} |
| } |
| |
| int f5() { |
| int a; |
| a = 30; // no-warning |
| } |
| |
| void f6(int i) { |
| int x; |
| for (i = 0 ; i < 10; i++) |
| printf("%d",x++); // expected-warning {{use of uninitialized variable}} \ |
| // expected-warning{{implicitly declaring C library function 'printf' with type 'int (char const *, ...)'}} \ |
| // expected-note{{please include the header <stdio.h> or explicitly provide a declaration for 'printf'}} |
| } |
| |
| void f7(int i) { |
| int x = i; |
| int y; |
| for (i = 0; i < 10; i++ ) { |
| printf("%d",x++); // no-warning |
| x += y; // expected-warning {{use of uninitialized variable}} |
| } |
| } |
| |
| int f8(int j) { |
| int x = 1, y = x + 1; |
| if (y) // no-warning |
| return x; |
| return y; |
| } |