Added unnamed bitfields to our bitfield test.
authorGreg Clayton <gclayton@apple.com>
Tue, 6 Nov 2012 18:22:59 +0000 (18:22 +0000)
committerGreg Clayton <gclayton@apple.com>
Tue, 6 Nov 2012 18:22:59 +0000 (18:22 +0000)
llvm-svn: 167473

lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
lldb/test/lang/c/bitfields/TestBitfields.py
lldb/test/lang/c/bitfields/main.c

index 69954f4..dcaf2e8 100644 (file)
@@ -1813,7 +1813,6 @@ SymbolFileDWARF::ParseChildMembers
                                         
                                         if (unnamed_bit_size > 0)
                                         {
-                                            //printf ("0x%8.8x: Unnamed bitfield added bit_size = 0x%x, bit_offset = 0x%x\n", die->GetOffset(), unnamed_bit_size, unnamed_bit_offset);
                                             clang::FieldDecl *unnamed_bitfield_decl = GetClangASTContext().AddFieldToRecordType (class_clang_type,
                                                                                                                                  NULL,
                                                                                                                                  member_type->GetClangLayoutType(),
index 66caa52..1772423 100644 (file)
@@ -113,15 +113,14 @@ class BitfieldsTestCase(TestBase):
         frame = thread.GetFrameAtIndex(0)
         bits = frame.FindVariable("bits")
         self.DebugSBValue(bits)
-        self.assertTrue(bits.GetTypeName() == "Bits" and
-                        bits.GetNumChildren() == 8 and
-                        bits.GetByteSize() == 32,
-                        "(Bits)bits with byte size of 32 and 8 children")
+        self.assertTrue(bits.GetTypeName() == 'Bits', "bits.GetTypeName() == 'Bits'");
+        self.assertTrue(bits.GetNumChildren() == 10, "bits.GetNumChildren() == 10");
+        self.assertTrue(bits.GetByteSize() == 32, "bits.GetByteSize() == 32");
 
         # Notice the pattern of int(b1.GetValue(), 0).  We pass a base of 0
         # so that the proper radix is determined based on the contents of the
         # string.
-        b1 = bits.GetChildAtIndex(0)
+        b1 = bits.GetChildMemberWithName("b1")
         self.DebugSBValue(b1)
         self.assertTrue(b1.GetName() == "b1" and
                         b1.GetTypeName() == "uint32_t:1" and
@@ -129,7 +128,7 @@ class BitfieldsTestCase(TestBase):
                         int(b1.GetValue(), 0) == 1,
                         'bits.b1 has type uint32_t:1, is in scope, and == 1')
 
-        b7 = bits.GetChildAtIndex(6)
+        b7 = bits.GetChildMemberWithName("b7")
         self.DebugSBValue(b7)
         self.assertTrue(b7.GetName() == "b7" and
                         b7.GetTypeName() == "uint32_t:7" and
@@ -137,7 +136,7 @@ class BitfieldsTestCase(TestBase):
                         int(b7.GetValue(), 0) == 127,
                         'bits.b7 has type uint32_t:7, is in scope, and == 127')
 
-        four = bits.GetChildAtIndex(7)
+        four = bits.GetChildMemberWithName("four")
         self.DebugSBValue(four)
         self.assertTrue(four.GetName() == "four" and
                         four.GetTypeName() == "uint32_t:4" and
index 00d455c..b833791 100644 (file)
@@ -12,9 +12,12 @@ int main (int argc, char const *argv[])
 {
     struct Bits
     {
-        uint32_t    b1 : 1,
+        uint32_t    : 1, // Unnamed bitfield
+                    b1 : 1,
                     b2 : 2,
+                    : 2, // Unnamed bitfield
                     b3 : 3,
+                    : 2, // Unnamed bitfield (this will get removed)
                     b4 __attribute__ ((align(16))),
                     b5 : 5,
                     b6 : 6,