1*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -Wunused-variable -fblocks -verify %s 2*67e74705SXin Li 3*67e74705SXin Li struct s0 { 4*67e74705SXin Li unsigned int i; 5*67e74705SXin Li }; 6*67e74705SXin Li 7*67e74705SXin Li int proto(int a, int b); 8*67e74705SXin Li f0(void)9*67e74705SXin Livoid f0(void) { 10*67e74705SXin Li int a __attribute__((unused)), 11*67e74705SXin Li b; // expected-warning{{unused}} 12*67e74705SXin Li return; 13*67e74705SXin Li } 14*67e74705SXin Li f1(void)15*67e74705SXin Livoid f1(void) { 16*67e74705SXin Li int i; 17*67e74705SXin Li (void)sizeof(i); 18*67e74705SXin Li return; 19*67e74705SXin Li } 20*67e74705SXin Li 21*67e74705SXin Li // PR5933 f2()22*67e74705SXin Liint f2() { 23*67e74705SXin Li int X = 4; // Shouldn't have a bogus 'unused variable X' warning. 24*67e74705SXin Li return Y + X; // expected-error {{use of undeclared identifier 'Y'}} 25*67e74705SXin Li } 26*67e74705SXin Li f3()27*67e74705SXin Liint f3() { 28*67e74705SXin Li int X1 = 4; 29*67e74705SXin Li (void)(Y1 + X1); // expected-error {{use of undeclared identifier 'Y1'}} 30*67e74705SXin Li (void)(^() { int X = 4; }); // expected-warning{{unused}} 31*67e74705SXin Li (void)(^() { int X = 4; return Y + X; }); // expected-error {{use of undeclared identifier 'Y'}} 32*67e74705SXin Li } 33