// RUN: %clang_cc1 -fsyntax-only -verify %s // PR4103 : Make sure we don't get a bogus unused expression warning namespace PR4103 { class APInt { char foo; }; class APSInt : public APInt { char bar; public: APSInt &operator=(const APSInt &RHS); }; APSInt& APSInt::operator=(const APSInt &RHS) { APInt::operator=(RHS); return *this; } template struct X { X(); }; void test() { X(); } } namespace derefvolatile { void f(volatile char* x) { *x; // expected-warning {{expression result unused; assign into a variable to force a volatile load}} (void)*x; // expected-warning {{expression result unused; assign into a variable to force a volatile load}} volatile char y = 10; (void)y; // don't warn here, because it's a common pattern. } }