xref: /aosp_15_r20/external/clang/test/Sema/pragma-unused.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -Wunused-parameter -Wused-but-marked-unused -Wunused -verify %s
2*67e74705SXin Li 
f1(void)3*67e74705SXin Li void 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 Li void 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 Li void 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 Li void 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 Li void 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 Li void 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 Li int f8(int x) { // expected-warning{{unused parameter 'x'}}
40*67e74705SXin Li   return 0;
41*67e74705SXin Li }
42*67e74705SXin Li 
f9(int x)43*67e74705SXin Li int f9(int x) {
44*67e74705SXin Li   return x;
45*67e74705SXin Li }
46*67e74705SXin Li 
f10(int x)47*67e74705SXin Li int 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 Li int 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 Li int 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