Index: lib/Sema/SemaDecl.cpp
===================================================================
--- lib/Sema/SemaDecl.cpp	(revision 211431)
+++ lib/Sema/SemaDecl.cpp	(working copy)
@@ -3754,6 +3754,8 @@
         }
       } else if (isa<AccessSpecDecl>(Mem)) {
         // Any access specifier is fine.
+      } else if (LangOpts.CPlusPlus1z && isa<StaticAssertDecl>(Mem)) {
+        // In C++1z, static_assert declarations are also fine.
       } else {
         // We have something that isn't a non-static data
         // member. Complain about it.
Index: test/CXX/class/class.union/p5-1z.cpp
===================================================================
--- test/CXX/class/class.union/p5-1z.cpp	(revision 0)
+++ test/CXX/class/class.union/p5-1z.cpp	(working copy)
@@ -0,0 +1,10 @@
+// RUN: %clang_cc1 -fsyntax-only -std=c++1z -verify %s
+// expected-no-diagnostics
+
+class C {
+  union {
+    static_assert(true);
+    int i;
+
+};
+};
Index: test/CXX/class/class.union/p5.cpp
===================================================================
--- test/CXX/class/class.union/p5.cpp	(revision 0)
+++ test/CXX/class/class.union/p5.cpp	(working copy)
@@ -0,0 +1,8 @@
+// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
+
+class C {
+  union {
+    static_assert(true, ""); // expected-error{{anonymous union can only contain non-static data members}}
+    int i;
+  };
+};
