Index: lib/Sema/SemaDecl.cpp
===================================================================
--- lib/Sema/SemaDecl.cpp	(revision 112951)
+++ lib/Sema/SemaDecl.cpp	(working copy)
@@ -5702,9 +5702,9 @@
           << New;
         Diag(Def->getLocation(), diag::note_previous_definition);
       } else {
-        Diag(Loc, 
-             getLangOptions().CPlusPlus? diag::err_forward_ref_enum
-                                       : diag::ext_forward_ref_enum);
+        Diag(Loc,
+             getLangOptions().CPlusPlus && !getLangOptions().Microsoft ?
+             diag::err_forward_ref_enum : diag::ext_forward_ref_enum);
       }
     }
   } else {
Index: test/SemaCXX/MicrosoftExtensions.cpp
===================================================================
--- test/SemaCXX/MicrosoftExtensions.cpp	(revision 112951)
+++ test/SemaCXX/MicrosoftExtensions.cpp	(working copy)
@@ -42,3 +42,6 @@
   h1<int>(&M::addP);
   h1(&M::subtractP);
 } 
+
+enum ENUM;
+ENUM *var;
