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