C++程序  |  37行  |  828 B

// 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<typename T>
  struct X {
    X();
  };

  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.
  }
}