Home | History | Annotate | Download | only in utils
      1 <?xml version="1.0" encoding="utf-8"?>
      2 <!--
      3 Visual Studio 2012 Native Debugging Visualizers for LLVM
      4 
      5 Put this file into "%USERPROFILE%\Documents\Visual Studio 2012\Visualizers"
      6 or create a symbolic link so it updates automatically.
      7 -->
      8 <AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
      9   <Type Name="llvm::SmallVector&lt;*,*&gt;">
     10     <DisplayString Condition="(($T1*)EndX - ($T1*)BeginX) == 0">empty</DisplayString>
     11     <DisplayString Condition="(($T1*)EndX - ($T1*)BeginX) != 0">{{ size={($T1*)EndX - ($T1*)BeginX} }}</DisplayString>
     12     <Expand>
     13       <Item Name="[size]">($T1*)EndX - ($T1*)BeginX</Item>
     14       <Item Name="[capacity]">($T1*)CapacityX - ($T1*)BeginX</Item>
     15       <ArrayItems>
     16         <Size>($T1*)EndX - ($T1*)BeginX</Size>
     17         <ValuePointer>($T1*)BeginX</ValuePointer>
     18       </ArrayItems>
     19     </Expand>
     20   </Type>
     21 
     22   <Type Name="llvm::SmallVectorImpl&lt;*&gt;">
     23     <DisplayString Condition="(($T1*)EndX - ($T1*)BeginX) == 0">empty</DisplayString>
     24     <DisplayString Condition="(($T1*)EndX - ($T1*)BeginX) != 0">[{($T1*)EndX - ($T1*)BeginX}]</DisplayString>
     25     <Expand>
     26       <Item Name="[size]">($T1*)EndX - ($T1*)BeginX</Item>
     27       <Item Name="[capacity]">($T1*)CapacityX - ($T1*)BeginX</Item>
     28       <ArrayItems>
     29         <Size>($T1*)EndX - ($T1*)BeginX</Size>
     30         <ValuePointer>($T1*)BeginX</ValuePointer>
     31       </ArrayItems>
     32     </Expand>
     33   </Type>
     34 
     35   <Type Name="llvm::SmallString&lt;*&gt;">
     36     <DisplayString>{BeginX,s}</DisplayString>
     37     <StringView>BeginX,s</StringView>
     38     <Expand>
     39       <Item Name="[size]">(char*)EndX - (char*)BeginX</Item>
     40       <Item Name="[capacity]">(char*)CapacityX - (char*)BeginX</Item>
     41       <ArrayItems>
     42         <Size>(char*)EndX - (char*)BeginX</Size>
     43         <ValuePointer>(char*)BeginX</ValuePointer>
     44       </ArrayItems>
     45     </Expand>
     46   </Type>
     47 
     48   <Type Name="llvm::StringRef">
     49     <DisplayString>[{Length}] {Data,s}</DisplayString>
     50     <StringView>Data,s</StringView>
     51     <Expand>
     52       <Item Name="[length]">Length</Item>
     53       <ArrayItems>
     54         <Size>Length</Size>
     55         <ValuePointer>Data</ValuePointer>
     56       </ArrayItems>
     57     </Expand>
     58   </Type>
     59 
     60   <Type Name="llvm::PointerIntPair&lt;*,*,*,*&gt;">
     61     <DisplayString>{Value &amp; PointerBitMask} [{(Value &gt;&gt; IntShift) &amp; IntMask}]</DisplayString>
     62     <Expand>
     63       <Item Name="[ptr]">Value &amp; PointerBitMask</Item>
     64       <Item Name="[int]">(Value &gt;&gt; IntShift) &amp; IntMask</Item>
     65     </Expand>
     66   </Type>
     67 
     68   <Type Name="llvm::PointerUnion&lt;*,*&gt;">
     69     <DisplayString Condition="((Val.Value &gt;&gt; Val.IntShift) &amp; Val.IntMask) == 0">[P1] {($T1)(Val.Value &amp; Val.PointerBitMask)}</DisplayString>
     70     <DisplayString Condition="((Val.Value &gt;&gt; Val.IntShift) &amp; Val.IntMask) != 0">[P2] {($T2)(Val.Value &amp; Val.PointerBitMask)}</DisplayString>
     71     <Expand>
     72       <Item Name="[ptr]" Condition="((Val.Value &gt;&gt; Val.IntShift) &amp; Val.IntMask) == 0">($T1)(Val.Value &amp; Val.PointerBitMask)</Item>
     73       <Item Name="[ptr]" Condition="((Val.Value &gt;&gt; Val.IntShift) &amp; Val.IntMask) != 0">($T2)(Val.Value &amp; Val.PointerBitMask)</Item>
     74     </Expand>
     75   </Type>
     76 
     77   <Type Name="llvm::PointerUnion3&lt;*,*,*&gt;">
     78     <DisplayString Condition="(Val.Val.Value &amp; 2) != 2 &amp;&amp; (Val.Val.Value &amp; 1) != 1">[P1] {($T1)((Val.Val.Value &gt;&gt; 2) &lt;&lt; 2)}</DisplayString>
     79     <DisplayString Condition="(Val.Val.Value &amp; 2) == 2">[P2] {($T2)((Val.Val.Value &gt;&gt; 2) &lt;&lt; 2)}</DisplayString>
     80     <DisplayString Condition="(Val.Val.Value &amp; 1) == 1">[P3] {($T3)((Val.Val.Value &gt;&gt; 2) &lt;&lt; 2)}</DisplayString>
     81     <Expand>
     82       <Item Name="[ptr]" Condition="(Val.Val.Value &amp; 2) != 2 &amp;&amp; (Val.Val.Value &amp; 1) != 1">($T1)((Val.Val.Value &gt;&gt; 2) &lt;&lt; 2)</Item>
     83       <Item Name="[ptr]" Condition="(Val.Val.Value &amp; 2) == 2">($T2)((Val.Val.Value &gt;&gt; 2) &lt;&lt; 2)</Item>
     84       <Item Name="[ptr]" Condition="(Val.Val.Value &amp; 1) == 1">($T3)((Val.Val.Value &gt;&gt; 2) &lt;&lt; 2)</Item>
     85     </Expand>
     86   </Type>
     87 
     88   <Type Name="llvm::PointerUnion4&lt;*,*,*,*&gt;">
     89     <DisplayString Condition="(Val.Val.Value &amp; 3) != 3 &amp;&amp; (Val.Val.Value &amp; 2) != 2 &amp;&amp; (Val.Val.Value &amp; 1) != 1">[P1] {($T1)((Val.Val.Value &gt;&gt; 2) &lt;&lt; 2)}</DisplayString>
     90     <DisplayString Condition="(Val.Val.Value &amp; 3) != 3 &amp;&amp; (Val.Val.Value &amp; 2) == 2">[P2] {($T2)((Val.Val.Value &gt;&gt; 2) &lt;&lt; 2)}</DisplayString>
     91     <DisplayString Condition="(Val.Val.Value &amp; 3) != 3 &amp;&amp; (Val.Val.Value &amp; 1) == 1">[P3] {($T3)((Val.Val.Value &gt;&gt; 2) &lt;&lt; 2)}</DisplayString>
     92     <DisplayString Condition="(Val.Val.Value &amp; 3) == 3">[P4] {($T4)((Val.Val.Value &gt;&gt; 2) &lt;&lt; 2)}</DisplayString>
     93     <Expand>
     94       <Item Name="[ptr]" Condition="(Val.Val.Value &amp; 3) != 3 &amp;&amp; (Val.Val.Value &amp; 2) != 2 &amp;&amp; (Val.Val.Value &amp; 1) != 1">($T1)((Val.Val.Value &gt;&gt; 2) &lt;&lt; 2)</Item>
     95       <Item Name="[ptr]" Condition="(Val.Val.Value &amp; 3) != 3 &amp;&amp; (Val.Val.Value &amp; 2) == 2">($T2)((Val.Val.Value &gt;&gt; 2) &lt;&lt; 2)</Item>
     96       <Item Name="[ptr]" Condition="(Val.Val.Value &amp; 3) != 3 &amp;&amp; (Val.Val.Value &amp; 1) == 1">($T3)((Val.Val.Value &gt;&gt; 2) &lt;&lt; 2)</Item>
     97       <Item Name="[ptr]" Condition="(Val.Val.Value &amp; 3) == 3">($T4)((Val.Val.Value &gt;&gt; 2) &lt;&lt; 2)</Item>
     98     </Expand>
     99   </Type>
    100 
    101   <Type Name="llvm::iplist&lt;*,*&gt;">
    102     <DisplayString Condition="Head == 0">{{ empty }}</DisplayString>
    103     <DisplayString Condition="Head != 0">{{ head={Head} }}</DisplayString>
    104     <Expand>
    105       <LinkedListItems>
    106         <HeadPointer>Head</HeadPointer>
    107         <NextPointer>Next</NextPointer>
    108         <ValueNode>this</ValueNode>
    109       </LinkedListItems>
    110     </Expand>
    111   </Type>
    112 
    113   <Type Name="llvm::IntrusiveRefCntPtr&lt;*&gt;">
    114     <DisplayString Condition="Obj == 0">empty</DisplayString>
    115     <DisplayString Condition="(Obj != 0) &amp;&amp; (Obj-&gt;ref_cnt == 1)">RefPtr [1 ref] {*Obj}</DisplayString>
    116     <DisplayString Condition="(Obj != 0) &amp;&amp; (Obj-&gt;ref_cnt != 1)">RefPtr [{Obj-&gt;ref_cnt} refs] {*Obj}</DisplayString>
    117     <Expand>
    118       <Item Condition="Obj != 0" Name="[refs]">Obj-&gt;ref_cnt</Item>
    119       <Item Condition="Obj != 0" Name="[ptr]">Obj</Item>
    120     </Expand>
    121   </Type>
    122 
    123   <Type Name="llvm::OwningPtr&lt;*&gt;">
    124     <DisplayString Condition="Ptr == 0">empty</DisplayString>
    125     <DisplayString Condition="Ptr != 0">OwningPtr {*Ptr}</DisplayString>
    126     <Expand>
    127       <Item Condition="Ptr != 0" Name="[ptr]">Ptr</Item>
    128     </Expand>
    129   </Type>
    130 
    131   <Type Name="llvm::SmallPtrSet&lt;*,*&gt;">
    132     <DisplayString Condition="CurArray == SmallArray">{{ [Small Mode] elements={NumElements}, arraySize={CurArraySize} }}</DisplayString>
    133     <DisplayString Condition="CurArray != SmallArray">{{ [Big Mode] elements={NumElements}, arraySize={CurArraySize} }}</DisplayString>
    134     <Expand>
    135       <Item Name="[NumElements]">NumElements</Item>
    136       <Item Name="[CurArraySize]">CurArraySize</Item>
    137       <IndexListItems>
    138         <Size>CurArraySize + 1</Size>
    139         <ValueNode>($T1*)&amp;CurArray[$i]</ValueNode>
    140       </IndexListItems>
    141     </Expand>
    142   </Type>
    143 
    144   <Type Name="llvm::DenseMap&lt;*,*,*&gt;">
    145     <DisplayString Condition="NumEntries == 0">empty</DisplayString>
    146     <DisplayString Condition="NumEntries != 0">{{ entries={NumEntries}, buckets={NumBuckets} }}</DisplayString>
    147     <Expand>
    148       <Item Name="[NumEntries]">NumEntries</Item>
    149       <Item Name="[NumBuckets]">NumBuckets</Item>
    150       <ArrayItems>
    151         <Size>NumBuckets</Size>
    152         <ValuePointer>Buckets</ValuePointer>
    153       </ArrayItems>
    154     </Expand>
    155   </Type>
    156 
    157   <Type Name="llvm::StringMap&lt;*,*&gt;">
    158     <DisplayString>{{ NumBuckets={NumBuckets}, ItemSize={ItemSize} }}</DisplayString>
    159     <Expand>
    160       <Item Name="[NumBuckets]">NumBuckets</Item>
    161       <Item Name="[ItemSize]">ItemSize</Item>
    162       <IndexListItems>
    163         <Size>NumBuckets</Size>
    164         <ValueNode>(llvm::StringMapEntry&lt;$T1&gt;*)TheTable[$i]</ValueNode>
    165       </IndexListItems>
    166     </Expand>
    167   </Type>
    168 
    169   <Type Name="llvm::StringMapEntry&lt;*&gt;">
    170     <DisplayString Condition="StrLen == 0">empty</DisplayString>
    171     <DisplayString Condition="StrLen != 0">({((llvm::StringMapEntry&lt;$T1&gt;*)this)+1,s}, {second})</DisplayString>
    172     <Expand>
    173       <Item Name="[key]">((llvm::StringMapEntry&lt;$T1&gt;*)this)+1,s</Item>
    174       <Item Name="[value]" Condition="StrLen != 0">second</Item>
    175     </Expand>
    176   </Type>
    177 
    178   <Type Name="llvm::Triple">
    179     <DisplayString>{Data}</DisplayString>
    180   </Type>
    181 </AutoVisualizer>
    182