1651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// RUN: %clang_cc1 -fsyntax-only -Wunused-variable -Wunused-label -verify %s
2651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
3651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstatic int unused_local_static;
4651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
5651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesnamespace PR8455 {
6651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  void f() {
7651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines    A: // expected-warning {{unused label 'A'}}
8651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines      __attribute__((unused)) int i; // attribute applies to variable
9651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines    B: // attribute applies to label
10651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines      __attribute__((unused)); int j; // expected-warning {{unused variable 'j'}}
11651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  }
12651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
13651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  void g() {
14651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines    C: // unused label 'C' will not appear here because an error has occurred
15651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines      __attribute__((unused))
16651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines      #pragma weak unused_local_static  // expected-error {{expected ';' after __attribute__}}
17651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines      ;
18651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  }
19651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
20651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  void h() {
21651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines    D: // expected-warning {{unused label 'D'}}
22651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines      #pragma weak unused_local_static
23651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines      __attribute__((unused))  // expected-warning {{declaration does not declare anything}}
24651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines      ;
25651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  }
26651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
27