[Lldb-commits] [PATCH] D102685: [lldb] Encode `bool` as unsigned int
Andy Yankovsky via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Tue May 18 06:38:45 PDT 2021
werat updated this revision to Diff 346161.
werat added a comment.
Keep @skipIfWindows for now
Add mroe checks in tests
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D102685/new/
https://reviews.llvm.org/D102685
Files:
lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp
lldb/test/API/lang/cpp/bitfields/TestCppBitfields.py
lldb/test/API/lang/cpp/bitfields/main.cpp
Index: lldb/test/API/lang/cpp/bitfields/main.cpp
===================================================================
--- lldb/test/API/lang/cpp/bitfields/main.cpp
+++ lldb/test/API/lang/cpp/bitfields/main.cpp
@@ -104,5 +104,17 @@
uwbf.x = 0xFFFFFFFF;
uwubf.x = 0xFFFFFFFF;
+ struct BoolBits {
+ bool a : 1;
+ bool b : 1;
+ bool c : 2;
+ bool d : 2;
+ } bb;
+
+ bb.a = 0b1;
+ bb.b = 0b0;
+ bb.c = 0b11;
+ bb.d = 0b01;
+
return 0; // Set break point at this line.
}
Index: lldb/test/API/lang/cpp/bitfields/TestCppBitfields.py
===================================================================
--- lldb/test/API/lang/cpp/bitfields/TestCppBitfields.py
+++ lldb/test/API/lang/cpp/bitfields/TestCppBitfields.py
@@ -120,3 +120,36 @@
'(uint32_t) b_a = 2',
'(uint32_t:1) d_a = 1',
])
+
+ self.expect(
+ "frame variable --show-types bb",
+ VARIABLES_DISPLAYED_CORRECTLY,
+ substrs=[
+ '(bool:1) a = true',
+ '(bool:1) b = false',
+ '(bool:2) c = true',
+ '(bool:2) d = true',
+ ])
+
+ bb = self.frame().FindVariable('bb')
+ self.assertTrue(bb.IsValid())
+
+ bb_a = bb.GetChildAtIndex(0)
+ self.assertTrue(bb_a.IsValid())
+ self.assertEqual(bb_a.GetValueAsUnsigned(), 1)
+ self.assertEqual(bb_a.GetValueAsSigned(), 1)
+
+ bb_b = bb.GetChildAtIndex(1)
+ self.assertTrue(bb_b.IsValid())
+ self.assertEqual(bb_b.GetValueAsUnsigned(), 0)
+ self.assertEqual(bb_b.GetValueAsSigned(), 0)
+
+ bb_c = bb.GetChildAtIndex(2)
+ self.assertTrue(bb_c.IsValid())
+ self.assertEqual(bb_c.GetValueAsUnsigned(), 1)
+ self.assertEqual(bb_c.GetValueAsSigned(), 1)
+
+ bb_d = bb.GetChildAtIndex(3)
+ self.assertTrue(bb_d.IsValid())
+ self.assertEqual(bb_d.GetValueAsUnsigned(), 1)
+ self.assertEqual(bb_d.GetValueAsSigned(), 1)
Index: lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp
===================================================================
--- lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp
+++ lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp
@@ -4698,7 +4698,6 @@
case clang::BuiltinType::Void:
break;
- case clang::BuiltinType::Bool:
case clang::BuiltinType::Char_S:
case clang::BuiltinType::SChar:
case clang::BuiltinType::WChar_S:
@@ -4709,6 +4708,7 @@
case clang::BuiltinType::Int128:
return lldb::eEncodingSint;
+ case clang::BuiltinType::Bool:
case clang::BuiltinType::Char_U:
case clang::BuiltinType::UChar:
case clang::BuiltinType::WChar_U:
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D102685.346161.patch
Type: text/x-patch
Size: 2744 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20210518/d3774733/attachment-0001.bin>
More information about the lldb-commits
mailing list