Index: test/CXX/dcl.dcl/dcl.enum/p2-p3-cxx11.cpp
===================================================================
--- test/CXX/dcl.dcl/dcl.enum/p2-p3-cxx11.cpp	(revision 0)
+++ test/CXX/dcl.dcl/dcl.enum/p2-p3-cxx11.cpp	(revision 0)
@@ -0,0 +1,86 @@
+// RUN: %clang_cc1 -std=c++11 -verify -fsyntax-only %s
+
+// p2: An opaque-enum-declaration declaring an unscoped enumeration shall not
+//     omit the enum-base
+namespace A {
+  enum Forward; // expected-error{{ISO C++ forbids forward references to \
+'enum' types}}
+}
+
+// p3: An opaque-enum-declaration is either a redeclaration of an enumeration
+//     in the current scope or a declaration of a new enumeration.
+namespace B {
+  enum Redecl: short { A, B, C };
+  enum Redecl: short;
+  // Make sure we can redeclare multiple times
+  enum Redecl: short;
+  
+  enum class ScopedRedecl: short { A, B, C };
+  enum class ScopedRedecl: short;
+  enum class ScopedRedecl: short;
+  
+  enum Forward: short;
+  // Make sure we can declare multiple times
+  enum Forward: short;
+  
+  enum class ScopedForward: short;
+  enum class ScopedForward: short;
+  
+  static_assert(sizeof(Forward) == sizeof(short), "");
+  static_assert(sizeof(ScopedForward) == sizeof(short), "");
+  
+  namespace B1 {
+    // In other scope, so ok
+    enum Forward: long;
+    
+    enum class ScopedForward: unsigned char;
+  }
+}
+
+// p3: A scoped enumeration shall not be later redeclared as unscoped or with
+//     a different underlying type. An unscoped enumeration shall not be later
+//     redeclared as scoped and each redeclaration shall include an enum-base
+//     specifying the same underlying type as in the original declaration.
+namespace C {
+  enum A: int; // expected-note{{previous use is here}}
+  enum A: short; // expected-error{{enumeration redeclared with different \
+underlying type 'short' (was 'int')}}
+
+  enum class B: short; // expected-note{{previous use is here}}
+  enum class B: int; // expected-error{{enumeration redeclared with \
+different underlying type 'int' (was 'short')}}
+
+  enum C: short { CA, CB, CC }; // expected-note{{previous use is here}}
+  enum C: int; // expected-error{{enumeration redeclared with different \
+underlying type 'int' (was 'short')}}
+
+  enum class D: short { DA, DB, DC }; // expected-note{{previous use is here}}
+  enum class D: int; // expected-error{{enumeration redeclared with \
+different underlying type 'int' (was 'short')}}
+
+  enum E { EA, EB, EC }; // expected-note{{previous use is here}}
+  enum E: short; // expected-error{{enumeration previously declared with \
+nonfixed underlying type}}
+
+  enum class F { FA, FB, FC }; // expected-note{{previous use is here}}
+  enum class F: short; // expected-error{{enumeration redeclared with \
+different underlying type 'short' (was 'int')}}
+
+  enum G: short; // expected-note{{previous use is here}}
+  enum G; // expected-error{{enumeration previously declared with fixed \
+underlying type}}
+
+  enum H: long; // expected-note{{previous use is here}}
+  enum class H: long; // expected-error{{enumeration previously declared as \
+unscoped}}
+
+  enum class J; // expected-note{{previous use is here}}
+  enum J; // expected-error{{enumeration previously declared as scoped}}
+
+  // These are ok
+  enum K: signed;
+  enum K: signed { KA, KB, KC };
+
+  enum class L: unsigned;
+  enum class L: unsigned { LA, LB, LC };
+}
Index: www/cxx_status.html
===================================================================
--- www/cxx_status.html	(revision 151367)
+++ www/cxx_status.html	(working copy)
@@ -156,7 +156,7 @@
       <td>
 	<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2764.pdf">N2764
       </a></td>
-      <td class="none" align="center">No</td>
+      <td class="svn" align="center">SVN</td>
     </tr>
     <tr>
       <td>Generalized attributes</td>
