diff --git a/clang/test/SemaCXX/exception-spec.cpp b/clang/test/SemaCXX/exception-spec.cpp
index f301a63..6ad19aa 100644
--- a/clang/test/SemaCXX/exception-spec.cpp
+++ b/clang/test/SemaCXX/exception-spec.cpp
@@ -5,3 +5,50 @@
   template<typename T> void foo(T); // expected-error {{missing exception specification 'noexcept(true)'}}
   void test() { foo(0); }
 }
+
+struct UseBeforeComplete1 {
+  ~UseBeforeComplete1(); // expected-note {{previous}}
+  struct X {
+    friend UseBeforeComplete1::~UseBeforeComplete1() noexcept; // expected-warning {{previously declared with an implicit}}
+  };
+};
+
+struct ThrowingDtor { ~ThrowingDtor() noexcept(false); };
+struct UseBeforeComplete2 {
+  ~UseBeforeComplete2(); // expected-note {{previous}}
+  struct X {
+    friend UseBeforeComplete2::~UseBeforeComplete2() noexcept; // expected-error {{does not match previous}}
+  };
+  ThrowingDtor td;
+};
+
+struct UseBeforeComplete3 {
+  ~UseBeforeComplete3();
+  struct X {
+    friend UseBeforeComplete3::~UseBeforeComplete3(); // ok, implicitly noexcept(true)
+  };
+};
+static_assert(noexcept(UseBeforeComplete3()), "");
+
+struct UseBeforeComplete4 {
+  ~UseBeforeComplete4();
+  struct X {
+    friend UseBeforeComplete4::~UseBeforeComplete4(); // ok, implicitly noexcept(false)
+  };
+  ThrowingDtor td;
+};
+static_assert(!noexcept(UseBeforeComplete4()), "");
+
+namespace AssignmentOp {
+  struct D1;
+  struct D2;
+  struct B {
+    B &operator=(const B&);
+    virtual D1 &operator=(const D1&) noexcept; // expected-note {{overridden}}
+    virtual D2 &operator=(const D2&) noexcept; // expected-note {{overridden}}
+  };
+  struct D1 : B {}; // expected-error {{more lax}}
+  struct D2 : B {
+    D2 &operator=(const D2&); // expected-error {{more lax}}
+  };
+}
