Eliminate CXXClassVarDecl. It doesn't add anything

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66696 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp
index 8c82c5c..f77d1d8 100644
--- a/lib/Sema/SemaDecl.cpp
+++ b/lib/Sema/SemaDecl.cpp
@@ -1580,27 +1580,20 @@
     return 0;
   }
 
-  if (DC->isRecord()) {
-    // This is a static data member for a C++ class.
-    NewVD = CXXClassVarDecl::Create(Context, cast<CXXRecordDecl>(DC),
-                                    D.getIdentifierLoc(), II,
-                                    R);
-  } else {
-    bool ThreadSpecified = D.getDeclSpec().isThreadSpecified();
-    if (S->getFnParent() == 0) {
-      // C99 6.9p2: The storage-class specifiers auto and register shall not
-      // appear in the declaration specifiers in an external declaration.
-      if (SC == VarDecl::Auto || SC == VarDecl::Register) {
-        Diag(D.getIdentifierLoc(), diag::err_typecheck_sclass_fscope);
-        InvalidDecl = true;
-      }
+  bool ThreadSpecified = D.getDeclSpec().isThreadSpecified();
+  if (!DC->isRecord() && S->getFnParent() == 0) {
+    // C99 6.9p2: The storage-class specifiers auto and register shall not
+    // appear in the declaration specifiers in an external declaration.
+    if (SC == VarDecl::Auto || SC == VarDecl::Register) {
+      Diag(D.getIdentifierLoc(), diag::err_typecheck_sclass_fscope);
+      InvalidDecl = true;
     }
-    NewVD = VarDecl::Create(Context, DC, D.getIdentifierLoc(), 
-                            II, R, SC, 
-                            // FIXME: Move to DeclGroup...
-                            D.getDeclSpec().getSourceRange().getBegin());
-    NewVD->setThreadSpecified(ThreadSpecified);
   }
+  NewVD = VarDecl::Create(Context, DC, D.getIdentifierLoc(), 
+                          II, R, SC, 
+                          // FIXME: Move to DeclGroup...
+                          D.getDeclSpec().getSourceRange().getBegin());
+  NewVD->setThreadSpecified(ThreadSpecified);
   NewVD->setNextDeclarator(LastDeclarator);
 
   // Handle attributes prior to checking for duplicates in MergeVarDecl
diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp
index 6df1600..fa6fcc8 100644
--- a/lib/Sema/SemaDeclCXX.cpp
+++ b/lib/Sema/SemaDeclCXX.cpp
@@ -560,7 +560,7 @@
     if (BitWidth) {
       if (Member->isInvalidDecl()) {
         // don't emit another diagnostic.
-      } else if (isa<CXXClassVarDecl>(Member)) {
+      } else if (isa<VarDecl>(Member)) {
         // C++ 9.6p3: A bit-field shall not be a static member.
         // "static member 'A' cannot be a bit-field"
         Diag(Loc, diag::err_static_not_bitfield)
@@ -621,7 +621,7 @@
     // C++ 9.2p4: A member-declarator can contain a constant-initializer only
     // if it declares a static member of const integral or const enumeration
     // type.
-    if (CXXClassVarDecl *CVD = dyn_cast<CXXClassVarDecl>(Member)) {
+    if (VarDecl *CVD = dyn_cast<VarDecl>(Member)) {
       // ...static member of...
       CVD->setInit(Init);
       // ...const integral or const enumeration type.
diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp
index e5a9174..58cd390 100644
--- a/lib/Sema/SemaExpr.cpp
+++ b/lib/Sema/SemaExpr.cpp
@@ -1744,7 +1744,7 @@
 
       return Owned(new (Context) MemberExpr(BaseExpr, OpKind == tok::arrow, FD,
                                             MemberLoc, MemberType));
-    } else if (CXXClassVarDecl *Var = dyn_cast<CXXClassVarDecl>(MemberDecl))
+    } else if (VarDecl *Var = dyn_cast<VarDecl>(MemberDecl))
       return Owned(new (Context) MemberExpr(BaseExpr, OpKind == tok::arrow,
                                   Var, MemberLoc,
                                   Var->getType().getNonReferenceType()));