When we're synthesizing copy/move-assignment, we can't form a reference to an
invalid field; make sure we don't try.  Fixes <rdar://problem/14084171>.

llvm-svn: 183479
diff --git a/clang/test/SemaCXX/member-init.cpp b/clang/test/SemaCXX/member-init.cpp
index 19e8e75..6e4fd5d 100644
--- a/clang/test/SemaCXX/member-init.cpp
+++ b/clang/test/SemaCXX/member-init.cpp
@@ -89,3 +89,14 @@
     const function &r; // expected-note {{reference member declared here}}
   } af;
 }
+
+namespace rdar14084171 {
+  struct Point { // expected-note 3 {{candidate constructor}}
+    double x;
+    double y;
+  };
+  struct Sprite {
+    Point location = Point(0,0); // expected-error {{no matching constructor for initialization of 'rdar14084171::Point'}}
+  };
+  void f(Sprite& x) { x = x; }
+}