12a5c45b1ae4406459fbb39cb477951987c59cb0fArgyrios Kyrtzidis// RUN: %clang_cc1 -fsyntax-only -Wunused-parameter -Wused-but-marked-unused -Wunused -verify %s 24726d03ab3abce41911c31d1354a18f1258cae4dTed Kremenek 34726d03ab3abce41911c31d1354a18f1258cae4dTed Kremenekvoid f1(void) { 44726d03ab3abce41911c31d1354a18f1258cae4dTed Kremenek int x, y, z; 54726d03ab3abce41911c31d1354a18f1258cae4dTed Kremenek #pragma unused(x) 64726d03ab3abce41911c31d1354a18f1258cae4dTed Kremenek #pragma unused(y, z) 74726d03ab3abce41911c31d1354a18f1258cae4dTed Kremenek 82a5c45b1ae4406459fbb39cb477951987c59cb0fArgyrios Kyrtzidis int w; // expected-warning {{unused}} 94726d03ab3abce41911c31d1354a18f1258cae4dTed Kremenek #pragma unused w // expected-warning{{missing '(' after '#pragma unused' - ignoring}} 104726d03ab3abce41911c31d1354a18f1258cae4dTed Kremenek} 114726d03ab3abce41911c31d1354a18f1258cae4dTed Kremenek 124726d03ab3abce41911c31d1354a18f1258cae4dTed Kremenekvoid f2(void) { 132a5c45b1ae4406459fbb39cb477951987c59cb0fArgyrios Kyrtzidis int x, y; // expected-warning {{unused}} expected-warning {{unused}} 144726d03ab3abce41911c31d1354a18f1258cae4dTed Kremenek #pragma unused(x,) // expected-warning{{expected '#pragma unused' argument to be a variable name}} 154726d03ab3abce41911c31d1354a18f1258cae4dTed Kremenek #pragma unused() // expected-warning{{expected '#pragma unused' argument to be a variable name}} 164726d03ab3abce41911c31d1354a18f1258cae4dTed Kremenek} 174726d03ab3abce41911c31d1354a18f1258cae4dTed Kremenek 184726d03ab3abce41911c31d1354a18f1258cae4dTed Kremenekvoid f3(void) { 197a02a3733cdd2ca672902d869fda4ef2e3f05052Ted Kremenek #pragma unused(x) // expected-warning{{undeclared variable 'x' used as an argument for '#pragma unused'}} 204726d03ab3abce41911c31d1354a18f1258cae4dTed Kremenek} 214726d03ab3abce41911c31d1354a18f1258cae4dTed Kremenek 224726d03ab3abce41911c31d1354a18f1258cae4dTed Kremenekvoid f4(void) { 232a5c45b1ae4406459fbb39cb477951987c59cb0fArgyrios Kyrtzidis int w; // expected-warning {{unused}} 244726d03ab3abce41911c31d1354a18f1258cae4dTed Kremenek #pragma unused((w)) // expected-warning{{expected '#pragma unused' argument to be a variable name}} 254726d03ab3abce41911c31d1354a18f1258cae4dTed Kremenek} 264726d03ab3abce41911c31d1354a18f1258cae4dTed Kremenek 274726d03ab3abce41911c31d1354a18f1258cae4dTed Kremenekvoid f6(void) { 284726d03ab3abce41911c31d1354a18f1258cae4dTed Kremenek int z; // no-warning 294726d03ab3abce41911c31d1354a18f1258cae4dTed Kremenek { 304726d03ab3abce41911c31d1354a18f1258cae4dTed Kremenek #pragma unused(z) // no-warning 314726d03ab3abce41911c31d1354a18f1258cae4dTed Kremenek } 324726d03ab3abce41911c31d1354a18f1258cae4dTed Kremenek} 334726d03ab3abce41911c31d1354a18f1258cae4dTed Kremenek 347a02a3733cdd2ca672902d869fda4ef2e3f05052Ted Kremenekvoid f7() { 357a02a3733cdd2ca672902d869fda4ef2e3f05052Ted Kremenek int y; 367a02a3733cdd2ca672902d869fda4ef2e3f05052Ted Kremenek #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'}} 377a02a3733cdd2ca672902d869fda4ef2e3f05052Ted Kremenek} 387a02a3733cdd2ca672902d869fda4ef2e3f05052Ted Kremenek 392127eccbe15fd3b1b29aa53ccedd2e0f55ad27f9Anders Carlssonint f8(int x) { // expected-warning{{unused parameter 'x'}} 402127eccbe15fd3b1b29aa53ccedd2e0f55ad27f9Anders Carlsson return 0; 412127eccbe15fd3b1b29aa53ccedd2e0f55ad27f9Anders Carlsson} 422127eccbe15fd3b1b29aa53ccedd2e0f55ad27f9Anders Carlsson 432127eccbe15fd3b1b29aa53ccedd2e0f55ad27f9Anders Carlssonint f9(int x) { 442127eccbe15fd3b1b29aa53ccedd2e0f55ad27f9Anders Carlsson return x; 452127eccbe15fd3b1b29aa53ccedd2e0f55ad27f9Anders Carlsson} 462127eccbe15fd3b1b29aa53ccedd2e0f55ad27f9Anders Carlsson 472127eccbe15fd3b1b29aa53ccedd2e0f55ad27f9Anders Carlssonint f10(int x) { 482127eccbe15fd3b1b29aa53ccedd2e0f55ad27f9Anders Carlsson #pragma unused(x) 492127eccbe15fd3b1b29aa53ccedd2e0f55ad27f9Anders Carlsson return 0; 502127eccbe15fd3b1b29aa53ccedd2e0f55ad27f9Anders Carlsson} 512127eccbe15fd3b1b29aa53ccedd2e0f55ad27f9Anders Carlsson 522127eccbe15fd3b1b29aa53ccedd2e0f55ad27f9Anders Carlssonint f11(int x) { 532127eccbe15fd3b1b29aa53ccedd2e0f55ad27f9Anders Carlsson #pragma unused(x) 542127eccbe15fd3b1b29aa53ccedd2e0f55ad27f9Anders Carlsson return x; // expected-warning{{'x' was marked unused but was used}} 552127eccbe15fd3b1b29aa53ccedd2e0f55ad27f9Anders Carlsson} 562127eccbe15fd3b1b29aa53ccedd2e0f55ad27f9Anders Carlsson 572127eccbe15fd3b1b29aa53ccedd2e0f55ad27f9Anders Carlssonint f12(int x) { 582127eccbe15fd3b1b29aa53ccedd2e0f55ad27f9Anders Carlsson int y = x; 592127eccbe15fd3b1b29aa53ccedd2e0f55ad27f9Anders Carlsson #pragma unused(x) // expected-warning{{'x' was marked unused but was used}} 602127eccbe15fd3b1b29aa53ccedd2e0f55ad27f9Anders Carlsson return y; 612127eccbe15fd3b1b29aa53ccedd2e0f55ad27f9Anders Carlsson} 622a5c45b1ae4406459fbb39cb477951987c59cb0fArgyrios Kyrtzidis 632a5c45b1ae4406459fbb39cb477951987c59cb0fArgyrios Kyrtzidis// rdar://8793832 642a5c45b1ae4406459fbb39cb477951987c59cb0fArgyrios Kyrtzidisstatic int glob_var = 0; 652a5c45b1ae4406459fbb39cb477951987c59cb0fArgyrios Kyrtzidis#pragma unused(glob_var) 66