[Lldb-commits] [PATCH] D102685: [lldb] Encode `bool` as unsigned int

Andy Yankovsky via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Wed May 19 06:33:11 PDT 2021


This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
werat marked an inline comment as done.
Closed by commit rG0bab7b26f4d9: [lldb] Encode `bool` as unsigned int (authored by werat).

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.346432.patch
Type: text/x-patch
Size: 2744 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20210519/785095c7/attachment-0001.bin>


More information about the lldb-commits mailing list