// RUN: %clang_cc1 -fsyntax-only -Wunused-variable -fblocks -verify %s

struct s0 {
	unsigned int	i;
};

int proto(int a, int b);

void f0(void) {
	int	a __attribute__((unused)),
		b; // expected-warning{{unused}}
	return;
}

void f1(void) {
	int	i;
	(void)sizeof(i);
	return;
}

// PR5933
int f2(void) {
  int X = 4;  // Shouldn't have a bogus 'unused variable X' warning.
  return Y + X; // expected-error {{use of undeclared identifier 'Y'}}
}

int f3(void) {
  int X1 = 4; 
  (void)(Y1 + X1); // expected-error {{use of undeclared identifier 'Y1'}}
  (void)(^() { int X = 4; }); // expected-warning{{unused}}
  (void)(^() { int X = 4; return Y + X; }); // expected-error {{use of undeclared identifier 'Y'}}
}
