/* Positive test for uninitialized variables.  */
/* { dg-do compile } */
/* { dg-options "-Wuninitialized" } */

int sink;

void f1(int parm)	/* { dg-bogus "uninitialized" "parameter" } */
{
  sink = parm;		/* { dg-bogus "uninitialized" "parameter" } */
}

void f2(void)
{
  int x;
  sink = x;		/* { dg-warning "is used" "unconditional" } */
}

void f3(int p)
{
  int x;		/* { dg-warning "may be used" "conditional" { xfail *-*-* } } */
  if (p)
    x = p;
  sink = x;
}

void f4(int p)
{
  int x;		/* { dg-bogus "uninitialized" "easy if" } */
  if (p)
    x = 1;
  else
    x = 2;
  sink = x;
}

void f5(void)
{
  int x, i;		/* { dg-bogus "uninitialized" "easy loop" } */
  for (i = 0; i < 10; ++i)
    x = 1;
  sink = x;
}
