// 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}}
  }
}

// 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;
}

Add another uninitialized values test case illustrating that the CFG correctly handles declarations with multiple variables.
Add another uninitialized values test case illustrating that the CFG correctly
handles declarations with multiple variables.


git-svn-id: ffe668792ed300d6c2daa1f6eba2e0aa28d7ec6c@68046 91177308-0d34-0410-b5e6-96231b3b80d8
