1// RUN: %clang_cc1 -verify -Wunused -Wused-but-marked-unused -Wunused-parameter -Wunused -fsyntax-only %s
2
3static void (*fp0)(void) __attribute__((unused));
4
5static void __attribute__((unused)) f0(void);
6
7// On K&R
8int f1() __attribute__((unused));
9
10int g0 __attribute__((unused));
11
12int f2() __attribute__((unused(1, 2))); // expected-error {{'unused' attribute takes no arguments}}
13
14struct Test0_unused {} __attribute__((unused));
15struct Test0_not_unused {};
16typedef int Int_unused __attribute__((unused));
17typedef int Int_not_unused;
18
19void test0() {
20  int x; // expected-warning {{unused variable}}
21
22  Int_not_unused i0; // expected-warning {{unused variable}}
23  Int_unused i1; // expected-warning {{'Int_unused' was marked unused but was used}}
24
25  struct Test0_not_unused s0; // expected-warning {{unused variable}}
26  struct Test0_unused s1; // expected-warning {{'Test0_unused' was marked unused but was used}}
27}
28
29int f3(int x) { // expected-warning{{unused parameter 'x'}}
30  return 0;
31}
32
33int f4(int x) {
34  return x;
35}
36
37int f5(int x __attribute__((__unused__))) {
38  return 0;
39}
40
41int f6(int x __attribute__((__unused__))) {
42  return x; // expected-warning{{'x' was marked unused but was used}}
43}
44