forked from OSchip/llvm-project
Added unnamed bitfields to our bitfield test.
llvm-svn: 167473
This commit is contained in:
parent
2fa5fb5ab8
commit
9f078b773d
|
@ -1813,7 +1813,6 @@ SymbolFileDWARF::ParseChildMembers
|
||||||
|
|
||||||
if (unnamed_bit_size > 0)
|
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,
|
clang::FieldDecl *unnamed_bitfield_decl = GetClangASTContext().AddFieldToRecordType (class_clang_type,
|
||||||
NULL,
|
NULL,
|
||||||
member_type->GetClangLayoutType(),
|
member_type->GetClangLayoutType(),
|
||||||
|
|
|
@ -113,15 +113,14 @@ class BitfieldsTestCase(TestBase):
|
||||||
frame = thread.GetFrameAtIndex(0)
|
frame = thread.GetFrameAtIndex(0)
|
||||||
bits = frame.FindVariable("bits")
|
bits = frame.FindVariable("bits")
|
||||||
self.DebugSBValue(bits)
|
self.DebugSBValue(bits)
|
||||||
self.assertTrue(bits.GetTypeName() == "Bits" and
|
self.assertTrue(bits.GetTypeName() == 'Bits', "bits.GetTypeName() == 'Bits'");
|
||||||
bits.GetNumChildren() == 8 and
|
self.assertTrue(bits.GetNumChildren() == 10, "bits.GetNumChildren() == 10");
|
||||||
bits.GetByteSize() == 32,
|
self.assertTrue(bits.GetByteSize() == 32, "bits.GetByteSize() == 32");
|
||||||
"(Bits)bits with byte size of 32 and 8 children")
|
|
||||||
|
|
||||||
# Notice the pattern of int(b1.GetValue(), 0). We pass a base of 0
|
# 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
|
# so that the proper radix is determined based on the contents of the
|
||||||
# string.
|
# string.
|
||||||
b1 = bits.GetChildAtIndex(0)
|
b1 = bits.GetChildMemberWithName("b1")
|
||||||
self.DebugSBValue(b1)
|
self.DebugSBValue(b1)
|
||||||
self.assertTrue(b1.GetName() == "b1" and
|
self.assertTrue(b1.GetName() == "b1" and
|
||||||
b1.GetTypeName() == "uint32_t:1" and
|
b1.GetTypeName() == "uint32_t:1" and
|
||||||
|
@ -129,7 +128,7 @@ class BitfieldsTestCase(TestBase):
|
||||||
int(b1.GetValue(), 0) == 1,
|
int(b1.GetValue(), 0) == 1,
|
||||||
'bits.b1 has type uint32_t:1, is in scope, and == 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.DebugSBValue(b7)
|
||||||
self.assertTrue(b7.GetName() == "b7" and
|
self.assertTrue(b7.GetName() == "b7" and
|
||||||
b7.GetTypeName() == "uint32_t:7" and
|
b7.GetTypeName() == "uint32_t:7" and
|
||||||
|
@ -137,7 +136,7 @@ class BitfieldsTestCase(TestBase):
|
||||||
int(b7.GetValue(), 0) == 127,
|
int(b7.GetValue(), 0) == 127,
|
||||||
'bits.b7 has type uint32_t:7, is in scope, and == 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.DebugSBValue(four)
|
||||||
self.assertTrue(four.GetName() == "four" and
|
self.assertTrue(four.GetName() == "four" and
|
||||||
four.GetTypeName() == "uint32_t:4" and
|
four.GetTypeName() == "uint32_t:4" and
|
||||||
|
|
|
@ -12,9 +12,12 @@ int main (int argc, char const *argv[])
|
||||||
{
|
{
|
||||||
struct Bits
|
struct Bits
|
||||||
{
|
{
|
||||||
uint32_t b1 : 1,
|
uint32_t : 1, // Unnamed bitfield
|
||||||
|
b1 : 1,
|
||||||
b2 : 2,
|
b2 : 2,
|
||||||
|
: 2, // Unnamed bitfield
|
||||||
b3 : 3,
|
b3 : 3,
|
||||||
|
: 2, // Unnamed bitfield (this will get removed)
|
||||||
b4 __attribute__ ((align(16))),
|
b4 __attribute__ ((align(16))),
|
||||||
b5 : 5,
|
b5 : 5,
|
||||||
b6 : 6,
|
b6 : 6,
|
||||||
|
|
Loading…
Reference in New Issue