diff options
Diffstat (limited to 'test/SemaCXX/unused.cpp')
-rw-r--r-- | test/SemaCXX/unused.cpp | 48 |
1 files changed, 30 insertions, 18 deletions
diff --git a/test/SemaCXX/unused.cpp b/test/SemaCXX/unused.cpp index 88783ce..54898c8 100644 --- a/test/SemaCXX/unused.cpp +++ b/test/SemaCXX/unused.cpp @@ -1,24 +1,36 @@ // RUN: %clang_cc1 -fsyntax-only -verify %s + // PR4103 : Make sure we don't get a bogus unused expression warning -class APInt { - char foo; -}; -class APSInt : public APInt { - char bar; -public: - APSInt &operator=(const APSInt &RHS); -}; +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; -} + APSInt& APSInt::operator=(const APSInt &RHS) { + APInt::operator=(RHS); + return *this; + } -template<typename T> -struct X { - X(); -}; + template<typename T> + struct X { + X(); + }; + + void test() { + X<int>(); + } +} -void test() { - X<int>(); +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. + } } |