19862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.org// RUN: %clang_cc1 -fsyntax-only -Wunused-variable -verify %s
29862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.orgstruct __attribute__((warn_unused)) Test {
39862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.org  Test();
49862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.org  ~Test();
59862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.org  void use();
69862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.org};
79862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.org
89862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.orgstruct TestNormal {
99862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.org  TestNormal();
109862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.org};
119862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.org
129862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.orgint main(void) {
139862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.org  Test unused;         // expected-warning {{unused variable 'unused'}}
14df5ffdd8b73415b78055177148995bdbdf38b12ehbono@chromium.org  Test used;
15df5ffdd8b73415b78055177148995bdbdf38b12ehbono@chromium.org  TestNormal normal;
169862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.org  used.use();
179862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.org
189862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.org  int i __attribute__((warn_unused)) = 12; // expected-warning {{'warn_unused' attribute only applies to struct, union or class}}
199862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.org  return i;
209862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.org}
219862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.org