[PATCH] D79331: Add MSVC natvis visualisation of llvm::Type
Machiel van Hooren via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon May 4 08:32:37 PDT 2020
mvhooren created this revision.
mvhooren added reviewers: mspertus, zturner.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
llvm::Type has some difficult to decode member variables with different meanings depending on the TypeID. Specifically SubclassData and ContainedTys.
This natvis visualisation decodes and visualises those members.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D79331
Files:
llvm/utils/LLVMVisualizers/llvm.natvis
Index: llvm/utils/LLVMVisualizers/llvm.natvis
===================================================================
--- llvm/utils/LLVMVisualizers/llvm.natvis
+++ llvm/utils/LLVMVisualizers/llvm.natvis
@@ -253,4 +253,52 @@
<Item Name="[Raw Bytes]" Condition="sizeof($T1)==8">(unsigned char *)Value.buffer,8</Item>
</Expand>
</Type>
+
+ <!-- llvm::Type has two fields, SubclassData and ContainedTys, the meaning of which change depending on the TypeID.
+ This visualiser decodes those fields based on the value of ID.
+ -->
+ <Type Name="llvm::Type">
+ <DisplayString>{ID}</DisplayString>
+ <Expand>
+ <Item Name="ID">ID</Item>
+
+ <Item Name="NumBits" Condition="ID == llvm::Type::TypeID::IntegerTyID">SubclassData</Item>
+
+ <Item Name="ReturnType" Condition="ID == llvm::Type::TypeID::FunctionTyID">*ContainedTys</Item>
+ <Synthetic Name="Arguments" Condition="ID == llvm::Type::TypeID::FunctionTyID">
+ <DisplayString>{NumContainedTys - 1}</DisplayString>
+ <Expand>
+ <ArrayItems>
+ <Size>NumContainedTys - 1</Size>
+ <ValuePointer>ContainedTys + 1</ValuePointer>
+ </ArrayItems>
+ </Expand>
+ </Synthetic>
+ <Item Name="IsVarArg" Condition="ID == llvm::Type::TypeID::FunctionTyID">SubclassData == 1</Item>
+
+ <Item Name="HasBody" Condition="ID == llvm::Type::TypeID::StructTyID">(SubclassData & llvm::StructType::SCDB_HasBody) != 0</Item>
+ <Item Name="Packed" Condition="ID == llvm::Type::TypeID::StructTyID">(SubclassData & llvm::StructType::SCDB_Packed) != 0</Item>
+ <Item Name="IsLiteral" Condition="ID == llvm::Type::TypeID::StructTyID">(SubclassData & llvm::StructType::SCDB_IsLiteral) != 0</Item>
+ <Item Name="IsSized" Condition="ID == llvm::Type::TypeID::StructTyID">(SubclassData & llvm::StructType::SCDB_IsSized) != 0</Item>
+ <Synthetic Name="Members" Condition="ID == llvm::Type::TypeID::StructTyID">
+ <DisplayString>{NumContainedTys}</DisplayString>
+ <Expand>
+ <ArrayItems>
+ <Size>NumContainedTys</Size>
+ <ValuePointer>ContainedTys</ValuePointer>
+ </ArrayItems>
+ </Expand>
+ </Synthetic>
+
+ <Item Name="ElementType" Condition="ID == llvm::Type::TypeID::ArrayTyID || ID == llvm::Type::TypeID::VectorTyID">*ContainedTys</Item>
+ <Item Name="NumElements" Condition="ID == llvm::Type::TypeID::ArrayTyID">((llvm::ArrayType*)this)->NumElements</Item>
+
+ <Item Name="AddressSpace" Condition="ID == llvm::Type::TypeID::PointerTyID">SubclassData</Item>
+ <Item Name="PointeeType" Condition="ID == llvm::Type::TypeID::PointerTyID">*ContainedTys</Item>
+
+ <Item Name="NumElements" Condition="ID == llvm::Type::TypeID::VectorTyID">((llvm::VectorType*)this)->NumElements</Item>
+
+ <Item Name="Context">Context</Item>
+ </Expand>
+ </Type>
</AutoVisualizer>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D79331.261819.patch
Type: text/x-patch
Size: 2953 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200504/579a7727/attachment.bin>
More information about the llvm-commits
mailing list