summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorSteve Naroff <snaroff@apple.com>2008-07-16 18:22:22 +0000
committerSteve Naroff <snaroff@apple.com>2008-07-16 18:22:22 +0000
commitde7d0f69badc320cf22b1cafefa15e39619ba5b1 (patch)
treee306de970bb2631602938b5bdd1d569fbda87b0a /clang/lib
parenta59fe95be3f12c4dc557015772a879cd1a168725 (diff)
downloadbcm5719-llvm-de7d0f69badc320cf22b1cafefa15e39619ba5b1.tar.gz
bcm5719-llvm-de7d0f69badc320cf22b1cafefa15e39619ba5b1.zip
Two fixes:
- Make sure ObjCIvarDecl propagates the bitfield width. - RewriteObjC::SynthesizeIvarOffsetComputation(): Avoid using the __OFFSETOF__ mumbo jumbo for bitfields (since it isn't legal C). This fixes <rdar://problem/5986079> clang ObjC rewriter: bitfields and ivar access don't mix. llvm-svn: 53694
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/AST/DeclObjC.cpp4
-rw-r--r--clang/lib/Sema/SemaDecl.cpp3
2 files changed, 4 insertions, 3 deletions
diff --git a/clang/lib/AST/DeclObjC.cpp b/clang/lib/AST/DeclObjC.cpp
index ce9379f19c1..ef3b2d74fb9 100644
--- a/clang/lib/AST/DeclObjC.cpp
+++ b/clang/lib/AST/DeclObjC.cpp
@@ -89,9 +89,9 @@ void ObjCInterfaceDecl::Destroy(ASTContext& C) {
ObjCIvarDecl *ObjCIvarDecl::Create(ASTContext &C, SourceLocation L,
- IdentifierInfo *Id, QualType T) {
+ IdentifierInfo *Id, QualType T, Expr *BW) {
void *Mem = C.getAllocator().Allocate<ObjCIvarDecl>();
- return new (Mem) ObjCIvarDecl(L, Id, T);
+ return new (Mem) ObjCIvarDecl(L, Id, T, BW);
}
ObjCProtocolDecl *ObjCProtocolDecl::Create(ASTContext &C,
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index f4d9da60147..00c73ea765c 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -1946,7 +1946,8 @@ Sema::DeclTy *Sema::ActOnIvar(Scope *S,
InvalidDecl = true;
}
- ObjCIvarDecl *NewID = ObjCIvarDecl::Create(Context, Loc, II, T);
+ ObjCIvarDecl *NewID = ObjCIvarDecl::Create(Context, Loc, II, T,
+ (Expr *)BitfieldWidth);
ProcessDeclAttributes(NewID, D);
OpenPOWER on IntegriCloud