[llvm] r364723 - Clean up MSVC visualization of LLVM pointer types

Mike Spertus via llvm-commits llvm-commits at lists.llvm.org
Sun Jun 30 14:54:34 PDT 2019


Author: mps
Date: Sun Jun 30 14:54:34 2019
New Revision: 364723

URL: http://llvm.org/viewvc/llvm-project?rev=364723&view=rev
Log:
Clean up MSVC visualization of LLVM pointer types

Create separate natvis ptr and int views for PointerIntPair.
These are convenient in watch Windows and will be used by 
Clang visualizers to be checked in shortly

Also, removed deref views as the MSVC na format has
done the same thing natively since MSVC2013.


Modified:
    llvm/trunk/utils/LLVMVisualizers/llvm.natvis

Modified: llvm/trunk/utils/LLVMVisualizers/llvm.natvis
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/LLVMVisualizers/llvm.natvis?rev=364723&r1=364722&r2=364723&view=diff
==============================================================================
--- llvm/trunk/utils/LLVMVisualizers/llvm.natvis (original)
+++ llvm/trunk/utils/LLVMVisualizers/llvm.natvis Sun Jun 30 14:54:34 2019
@@ -76,37 +76,28 @@ For later versions of Visual Studio, no
     </Expand>
   </Type>
 
+  <!-- PointerIntPair. In addition to the regular view, it is possible to view just the pointer or just the int
+    The same code is duplicated from the regular viewer to improve the performance of the common case -->
   <Type Name="llvm::PointerIntPair<*>">
+    <DisplayString IncludeView="ptr">{($T1)(Value & $T5::PointerBitMask)}</DisplayString>
+    <DisplayString IncludeView="int">{($T3)((Value >> $T5::IntShift) & $T5::IntMask)}</DisplayString>
     <DisplayString>{$T5::IntMask}: {($T1)(Value & $T5::PointerBitMask)} [{($T3)((Value >> $T5::IntShift) & $T5::IntMask)}]</DisplayString>
     <Expand>
       <Item Name="[ptr]">($T1)(Value & $T5::PointerBitMask)</Item>
       <Item Name="[int]">($T3)((Value >> $T5::IntShift) & $T5::IntMask)</Item>
     </Expand>
   </Type>
-  <!-- PointerUnion types - In addition to the regular view, which displays the pointer, there is a "deref" view that
-       displays the pointed to object, which is often needed by other visualizers -->
+  <!-- PointerUnion types -->
   <Type Name="llvm::pointer_union_detail::PointerUnionMembers<*>">
-    <DisplayString Optional="true" IncludeView="deref" Condition="((Val.Value>>$T2::InfoTy::IntShift) & $T2::InfoTy::IntMask) == 0">
-      {*($T4)(Val.Value & $T2::InfoTy::PointerBitMask)}
-    </DisplayString>
     <DisplayString Optional="true" Condition="((Val.Value>>$T2::InfoTy::IntShift) & $T2::InfoTy::IntMask) == 0">
       {($T4)(Val.Value & $T2::InfoTy::PointerBitMask)}
     </DisplayString>
-    <DisplayString Optional="true" IncludeView="deref" Condition="((Val.Value>>$T2::InfoTy::IntShift) & $T2::InfoTy::IntMask) == 1">
-      {*($T5)(Val.Value & $T2::InfoTy::PointerBitMask)}
-    </DisplayString>
     <DisplayString Optional="true" Condition="((Val.Value>>$T2::InfoTy::IntShift) & $T2::InfoTy::IntMask) == 1">
       {($T5)(Val.Value & $T2::InfoTy::PointerBitMask)}
     </DisplayString>
-    <DisplayString Optional="true" IncludeView="deref" Condition="((Val.Value>>$T2::InfoTy::IntShift) & $T2::InfoTy::IntMask) == 2">
-      {*($T6)(Val.Value & $T2::InfoTy::PointerBitMask)}
-    </DisplayString>
     <DisplayString Optional="true" Condition="((Val.Value>>$T2::InfoTy::IntShift) & $T2::InfoTy::IntMask) == 2">
       {($T6)(Val.Value & $T2::InfoTy::PointerBitMask)}
     </DisplayString>
-    <DisplayString Optional="true" IncludeView="deref" Condition="((Val.Value>>$T2::InfoTy::IntShift) & $T2::InfoTy::IntMask) == 3">
-      {*($T7)(Val.Value & $T2::InfoTy::PointerBitMask)}
-    </DisplayString>
     <DisplayString Optional="true" Condition="((Val.Value>>$T2::InfoTy::IntShift) & $T2::InfoTy::IntMask) == 3">
       {($T7)(Val.Value & $T2::InfoTy::PointerBitMask)}
     </DisplayString>




More information about the llvm-commits mailing list