11d3ce65c190ef287ae3fa7bdff7f3621fd53b151Lubos Lunak// RUN: %clang_cc1 -fsyntax-only -Wunused-variable -verify %s
2651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct __attribute__((warn_unused)) Test {
3651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  Test();
4651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  ~Test();
5651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  void use();
61d3ce65c190ef287ae3fa7bdff7f3621fd53b151Lubos Lunak};
71d3ce65c190ef287ae3fa7bdff7f3621fd53b151Lubos Lunak
8651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct TestNormal {
9651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  TestNormal();
101d3ce65c190ef287ae3fa7bdff7f3621fd53b151Lubos Lunak};
111d3ce65c190ef287ae3fa7bdff7f3621fd53b151Lubos Lunak
12651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint main(void) {
13651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  Test unused;         // expected-warning {{unused variable 'unused'}}
14651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  Test used;
15651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  TestNormal normal;
16651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  used.use();
17651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
18651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  int i __attribute__((warn_unused)) = 12; // expected-warning {{'warn_unused' attribute only applies to struct, union or class}}
19651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return i;
201d3ce65c190ef287ae3fa7bdff7f3621fd53b151Lubos Lunak}
21