[llvm] bb90a5c - [llvm][utils] Fix SmallVector formatter when type is a pointer

Michael Buch via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 15 15:10:15 PDT 2023


Author: Michael Buch
Date: 2023-08-15T23:09:59+01:00
New Revision: bb90a5cf204119c87452f1d98338b3768fedb184

URL: https://github.com/llvm/llvm-project/commit/bb90a5cf204119c87452f1d98338b3768fedb184
DIFF: https://github.com/llvm/llvm-project/commit/bb90a5cf204119c87452f1d98338b3768fedb184.diff

LOG: [llvm][utils] Fix SmallVector formatter when type is a pointer

Previously types such as `SmallVector<clang::Attr, 4> *` would
trigger the assertion inside the `SmallVector` formatter:
```
assert self.type_size != 0
```
This happens because `the_type.GetTemplateArgumentType(0)` returns
`None` (since `the_type` is a pointer to the `SmallVector`).

This patch dereferences `the_type` if it's a pointer type. We do this
for references already.

Differential Revision: https://reviews.llvm.org/D157961

Added: 
    

Modified: 
    llvm/utils/lldbDataFormatters.py

Removed: 
    


################################################################################
diff  --git a/llvm/utils/lldbDataFormatters.py b/llvm/utils/lldbDataFormatters.py
index fec1153d3ef8df..8e0e7e1c0c5121 100644
--- a/llvm/utils/lldbDataFormatters.py
+++ b/llvm/utils/lldbDataFormatters.py
@@ -129,6 +129,9 @@ def update(self):
         if the_type.IsReferenceType():
             the_type = the_type.GetDereferencedType()
 
+        if the_type.IsPointerType():
+            the_type = the_type.GetPointeeType()
+
         self.data_type = the_type.GetTemplateArgumentType(0)
         self.type_size = self.data_type.GetByteSize()
         assert self.type_size != 0


        


More information about the llvm-commits mailing list