diff options
| author | Daniel Dunbar <daniel@zuster.org> | 2008-10-03 02:03:53 +0000 |
|---|---|---|
| committer | Daniel Dunbar <daniel@zuster.org> | 2008-10-03 02:03:53 +0000 |
| commit | 15619c7e4ba86d1de0fb66b0c9c7d0dccf0679f1 (patch) | |
| tree | 5226aa132b42cd7cab06ba675cf7d1c23fbb9756 | |
| parent | 438b0c0c033dcea09ba7aff030dd348a64ae5bb3 (diff) | |
| download | bcm5719-llvm-15619c7e4ba86d1de0fb66b0c9c7d0dccf0679f1.tar.gz bcm5719-llvm-15619c7e4ba86d1de0fb66b0c9c7d0dccf0679f1.zip | |
Pass postfix attributes to ActOnFields.
llvm-svn: 56992
| -rw-r--r-- | clang/Driver/PrintParserCallbacks.cpp | 3 | ||||
| -rw-r--r-- | clang/lib/AST/ASTContext.cpp | 2 | ||||
| -rw-r--r-- | clang/lib/Parse/ParseDecl.cpp | 9 | ||||
| -rw-r--r-- | clang/lib/Parse/ParseObjc.cpp | 2 | ||||
| -rw-r--r-- | clang/lib/Sema/Sema.h | 3 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 3 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 2 |
7 files changed, 15 insertions, 9 deletions
diff --git a/clang/Driver/PrintParserCallbacks.cpp b/clang/Driver/PrintParserCallbacks.cpp index caae11b861e..b616268376f 100644 --- a/clang/Driver/PrintParserCallbacks.cpp +++ b/clang/Driver/PrintParserCallbacks.cpp @@ -205,7 +205,8 @@ namespace { virtual void ActOnFields(Scope* S, SourceLocation RecLoc, DeclTy *TagDecl, DeclTy **Fields, unsigned NumFields, - SourceLocation LBrac, SourceLocation RBrac) { + SourceLocation LBrac, SourceLocation RBrac, + AttributeList *AttrList) { llvm::cout << __FUNCTION__ << "\n"; } diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp index feb1bad4f95..b373f3ac2ab 100644 --- a/clang/lib/AST/ASTContext.cpp +++ b/clang/lib/AST/ASTContext.cpp @@ -492,6 +492,8 @@ ASTContext::getASTObjCInterfaceLayout(const ObjCInterfaceDecl *D) { /// specified record (struct/union/class), which indicates its size and field /// position information. const ASTRecordLayout &ASTContext::getASTRecordLayout(const RecordDecl *D) { + fprintf(stderr, "%p\n", D->getAttr<PackedAttr>()); + D = D->getDefinition(*this); assert(D && "Cannot get layout of forward declarations!"); diff --git a/clang/lib/Parse/ParseDecl.cpp b/clang/lib/Parse/ParseDecl.cpp index 80970a2f14d..5ea9d13b031 100644 --- a/clang/lib/Parse/ParseDecl.cpp +++ b/clang/lib/Parse/ParseDecl.cpp @@ -764,14 +764,15 @@ void Parser::ParseStructUnionBody(SourceLocation RecordLoc, SourceLocation RBraceLoc = MatchRHSPunctuation(tok::r_brace, LBraceLoc); - Actions.ActOnFields(CurScope, - RecordLoc,TagDecl,&FieldDecls[0],FieldDecls.size(), - LBraceLoc, RBraceLoc); - AttributeList *AttrList = 0; // If attributes exist after struct contents, parse them. if (Tok.is(tok::kw___attribute)) AttrList = ParseAttributes(); // FIXME: where should I put them? + + Actions.ActOnFields(CurScope, + RecordLoc,TagDecl,&FieldDecls[0],FieldDecls.size(), + LBraceLoc, RBraceLoc, + AttrList); } diff --git a/clang/lib/Parse/ParseObjc.cpp b/clang/lib/Parse/ParseObjc.cpp index c48cc8aa1ab..0222b0401a5 100644 --- a/clang/lib/Parse/ParseObjc.cpp +++ b/clang/lib/Parse/ParseObjc.cpp @@ -900,7 +900,7 @@ void Parser::ParseObjCClassInstanceVariables(DeclTy *interfaceDecl, // for code rewriting tools that need to be aware of the empty list. Actions.ActOnFields(CurScope, atLoc, interfaceDecl, &AllIvarDecls[0], AllIvarDecls.size(), - LBraceLoc, RBraceLoc); + LBraceLoc, RBraceLoc, 0); return; } diff --git a/clang/lib/Sema/Sema.h b/clang/lib/Sema/Sema.h index 696a6f41941..36f5de8bb32 100644 --- a/clang/lib/Sema/Sema.h +++ b/clang/lib/Sema/Sema.h @@ -282,7 +282,8 @@ private: virtual void ActOnFields(Scope* S, SourceLocation RecLoc, DeclTy *TagDecl, DeclTy **Fields, unsigned NumFields, - SourceLocation LBrac, SourceLocation RBrac); + SourceLocation LBrac, SourceLocation RBrac, + AttributeList *AttrList); virtual DeclTy *ActOnEnumConstant(Scope *S, DeclTy *EnumDecl, DeclTy *LastEnumConstant, SourceLocation IdLoc, IdentifierInfo *Id, diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 1d755efd121..315bf98af5a 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -2111,7 +2111,8 @@ Sema::DeclTy *Sema::ActOnIvar(Scope *S, void Sema::ActOnFields(Scope* S, SourceLocation RecLoc, DeclTy *RecDecl, DeclTy **Fields, unsigned NumFields, - SourceLocation LBrac, SourceLocation RBrac) { + SourceLocation LBrac, SourceLocation RBrac, + AttributeList *Attrs) { Decl *EnclosingDecl = static_cast<Decl*>(RecDecl); assert(EnclosingDecl && "missing record or interface decl"); RecordDecl *Record = dyn_cast<RecordDecl>(EnclosingDecl); diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 85097cabd4f..c46954568f0 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -461,7 +461,7 @@ void Sema::ActOnFinishCXXMemberSpecification(Scope* S, SourceLocation RLoc, SourceLocation RBrac) { ActOnFields(S, RLoc, TagDecl, (DeclTy**)FieldCollector->getCurFields(), - FieldCollector->getCurNumFields(), LBrac, RBrac); + FieldCollector->getCurNumFields(), LBrac, RBrac, 0); } void Sema::ActOnFinishCXXClassDef(DeclTy *D) { |

