diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-03-11 20:22:50 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-03-11 20:22:50 +0000 |
commit | 212cab3f64363b5ffbb932e43b98e54e1e79f26c (patch) | |
tree | 985b9827e9c110fcb435a399d0043e59fadba9b5 /clang/lib/Sema | |
parent | 3b046d084e01fc9837c3e159bcaec8b94ecb8e82 (diff) | |
download | bcm5719-llvm-212cab3f64363b5ffbb932e43b98e54e1e79f26c.tar.gz bcm5719-llvm-212cab3f64363b5ffbb932e43b98e54e1e79f26c.zip |
Eliminate CXXClassVarDecl. It doesn't add anything
llvm-svn: 66696
Diffstat (limited to 'clang/lib/Sema')
-rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 31 | ||||
-rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 4 | ||||
-rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 2 |
3 files changed, 15 insertions, 22 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 8c82c5cad33..f77d1d8845f 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -1580,27 +1580,20 @@ Sema::ActOnVariableDeclarator(Scope* S, Declarator& D, DeclContext* DC, 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/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 6df1600c695..fa6fcc8c35a 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -560,7 +560,7 @@ Sema::ActOnCXXMemberDeclarator(Scope *S, AccessSpecifier AS, Declarator &D, 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 @@ Sema::ActOnCXXMemberDeclarator(Scope *S, AccessSpecifier AS, Declarator &D, // 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/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index e5a917474fd..58cd3909c20 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -1744,7 +1744,7 @@ Sema::ActOnMemberReferenceExpr(Scope *S, ExprArg Base, SourceLocation OpLoc, 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())); |