summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2008-10-03 02:03:53 +0000
committerDaniel Dunbar <daniel@zuster.org>2008-10-03 02:03:53 +0000
commit15619c7e4ba86d1de0fb66b0c9c7d0dccf0679f1 (patch)
tree5226aa132b42cd7cab06ba675cf7d1c23fbb9756
parent438b0c0c033dcea09ba7aff030dd348a64ae5bb3 (diff)
downloadbcm5719-llvm-15619c7e4ba86d1de0fb66b0c9c7d0dccf0679f1.tar.gz
bcm5719-llvm-15619c7e4ba86d1de0fb66b0c9c7d0dccf0679f1.zip
Pass postfix attributes to ActOnFields.
llvm-svn: 56992
-rw-r--r--clang/Driver/PrintParserCallbacks.cpp3
-rw-r--r--clang/lib/AST/ASTContext.cpp2
-rw-r--r--clang/lib/Parse/ParseDecl.cpp9
-rw-r--r--clang/lib/Parse/ParseObjc.cpp2
-rw-r--r--clang/lib/Sema/Sema.h3
-rw-r--r--clang/lib/Sema/SemaDecl.cpp3
-rw-r--r--clang/lib/Sema/SemaDeclCXX.cpp2
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) {
OpenPOWER on IntegriCloud