1*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -Wunused-parameter -Wused-but-marked-unused -Wunused -verify %s 2*67e74705SXin Li f1(void)3*67e74705SXin Livoid f1(void) { 4*67e74705SXin Li int x, y, z; 5*67e74705SXin Li #pragma unused(x) 6*67e74705SXin Li #pragma unused(y, z) 7*67e74705SXin Li 8*67e74705SXin Li int w; // expected-warning {{unused}} 9*67e74705SXin Li #pragma unused w // expected-warning{{missing '(' after '#pragma unused' - ignoring}} 10*67e74705SXin Li } 11*67e74705SXin Li f2(void)12*67e74705SXin Livoid f2(void) { 13*67e74705SXin Li int x, y; // expected-warning {{unused}} expected-warning {{unused}} 14*67e74705SXin Li #pragma unused(x,) // expected-warning{{expected '#pragma unused' argument to be a variable name}} 15*67e74705SXin Li #pragma unused() // expected-warning{{expected '#pragma unused' argument to be a variable name}} 16*67e74705SXin Li } 17*67e74705SXin Li f3(void)18*67e74705SXin Livoid f3(void) { 19*67e74705SXin Li #pragma unused(x) // expected-warning{{undeclared variable 'x' used as an argument for '#pragma unused'}} 20*67e74705SXin Li } 21*67e74705SXin Li f4(void)22*67e74705SXin Livoid f4(void) { 23*67e74705SXin Li int w; // expected-warning {{unused}} 24*67e74705SXin Li #pragma unused((w)) // expected-warning{{expected '#pragma unused' argument to be a variable name}} 25*67e74705SXin Li } 26*67e74705SXin Li f6(void)27*67e74705SXin Livoid f6(void) { 28*67e74705SXin Li int z; // no-warning 29*67e74705SXin Li { 30*67e74705SXin Li #pragma unused(z) // no-warning 31*67e74705SXin Li } 32*67e74705SXin Li } 33*67e74705SXin Li f7()34*67e74705SXin Livoid f7() { 35*67e74705SXin Li int y; 36*67e74705SXin Li #pragma unused(undeclared, undefined, y) // expected-warning{{undeclared variable 'undeclared' used as an argument for '#pragma unused'}} expected-warning{{undeclared variable 'undefined' used as an argument for '#pragma unused'}} 37*67e74705SXin Li } 38*67e74705SXin Li f8(int x)39*67e74705SXin Liint f8(int x) { // expected-warning{{unused parameter 'x'}} 40*67e74705SXin Li return 0; 41*67e74705SXin Li } 42*67e74705SXin Li f9(int x)43*67e74705SXin Liint f9(int x) { 44*67e74705SXin Li return x; 45*67e74705SXin Li } 46*67e74705SXin Li f10(int x)47*67e74705SXin Liint f10(int x) { 48*67e74705SXin Li #pragma unused(x) 49*67e74705SXin Li return 0; 50*67e74705SXin Li } 51*67e74705SXin Li f11(int x)52*67e74705SXin Liint f11(int x) { 53*67e74705SXin Li #pragma unused(x) 54*67e74705SXin Li return x; // expected-warning{{'x' was marked unused but was used}} 55*67e74705SXin Li } 56*67e74705SXin Li f12(int x)57*67e74705SXin Liint f12(int x) { 58*67e74705SXin Li int y = x; 59*67e74705SXin Li #pragma unused(x) // expected-warning{{'x' was marked unused but was used}} 60*67e74705SXin Li return y; 61*67e74705SXin Li } 62*67e74705SXin Li 63*67e74705SXin Li // rdar://8793832 64*67e74705SXin Li static int glob_var = 0; 65*67e74705SXin Li #pragma unused(glob_var) 66