On Sep 6, 2010, at 5:00 AM, Argyrios Kyrtzidis wrote: > Author: akirtzidis > Date: Mon Sep 6 07:00:10 2010 > New Revision: 113154 > > URL: http://llvm.org/viewvc/llvm-project?rev=113154&view=rev > Log: > LastFieldBitfield in CGObjCCommonMac::BuildAggrIvarLayout keeps > bitfields or unnamed fields but later the code > assumes that it's always a bitfield. This can lead to a crash > (reported at rdar://8368320). > > Modified: > cfe/trunk/lib/CodeGen/CGObjCMac.cpp > cfe/trunk/test/CodeGenObjC/ivars.m > > Modified: cfe/trunk/lib/CodeGen/CGObjCMac.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCMac.cpp?rev=113154&r1=113153&r2=113154&view=diff > = > = > = > = > = > = > = > = > ====================================================================== > --- cfe/trunk/lib/CodeGen/CGObjCMac.cpp (original) > +++ cfe/trunk/lib/CodeGen/CGObjCMac.cpp Mon Sep 6 07:00:10 2010 > @@ -3586,10 +3586,10 @@ > uint64_t MaxSkippedUnionIvarSize = 0; > FieldDecl *MaxField = 0; > FieldDecl *MaxSkippedField = 0; > - FieldDecl *LastFieldBitfield = 0; > + FieldDecl *LastFieldBitfieldOrUnnamed = 0; > uint64_t MaxFieldOffset = 0; > uint64_t MaxSkippedFieldOffset = 0; > - uint64_t LastBitfieldOffset = 0; > + uint64_t LastBitfieldOrUnnamedOffset = 0; > > if (RecFields.empty()) > return; > @@ -3609,12 +3609,12 @@ > > // Skip over unnamed or bitfields > if (!Field->getIdentifier() || Field->isBitField()) {
OK. We were keeping track of unnamed fields here but forgot about them at the end. Fariborz. > _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
