]> granicus.if.org Git - clang/commitdiff
Added MSVC visualizers for PointerIntPair and PointerUnions.
authorAaron Ballman <aaron@aaronballman.com>
Mon, 6 Feb 2012 20:47:31 +0000 (20:47 +0000)
committerAaron Ballman <aaron@aaronballman.com>
Mon, 6 Feb 2012 20:47:31 +0000 (20:47 +0000)
Patch by Nikola Smiljanic

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149896 91177308-0d34-0410-b5e6-96231b3b80d8

utils/clangVisualizers.txt

index f9f834b76c5021847bdb6064a4d0225479e49129..a5a8ee60399c7c25c81834b4ce3863bf7bacfaf2 100644 (file)
@@ -41,4 +41,94 @@ llvm::StringRef{
 
 clang::Token{
        preview((clang::tok::TokenKind)(int)$e.Kind)
-}
\ No newline at end of file
+}
+
+PointerIntPair<*,*,*,*>{
+       preview (
+               #(
+                       ($T1*)($e.Value & PointerBitMask),
+                       " [",
+                       ($T3)(($e.Value >> IntShift) & IntMask),
+                       "]"
+               )
+       )
+       
+       children (
+               #(
+                       #([ptr] : ($T1*)($e.Value & PointerBitMask)),
+                       #([int] : ($T3)($e.Value >> IntShift) & IntMask)
+               )
+       )
+}
+
+PointerUnion<*,*>{
+       preview (
+               #if ((($e.Val.Value >> $e.Val.IntShift) & $e.Val.IntMask) == 0) (
+                       "PT1"
+               ) #else (
+                       "PT2"
+               )
+       )
+       
+       children (
+               #(
+                       #if ((($e.Val.Value >> $e.Val.IntShift) & $e.Val.IntMask) == 0) (
+                               #([ptr] : ($T1)($e.Val.Value & $e.Val.PointerBitMask))
+                       )       #else (
+                               #([ptr] : ($T2)($e.Val.Value & $e.Val.PointerBitMask))
+                       )
+               )
+       )
+}
+
+PointerUnion3<*,*,*>{
+       preview (
+               #if (($e.Val.Val.Value & 0x2) == 2) (
+                       "PT2"
+               ) #elif (($e.Val.Val.Value & 0x1) == 1) (
+                       "PT3"
+               ) #else (
+                       "PT1"
+               )
+       )
+       
+       children (
+               #(
+                       #if (($e.Val.Val.Value & 0x2) == 2) (
+                               #([ptr] : ($T2)(($e.Val.Val.Value >> 2) << 2))
+                       ) #elif (($e.Val.Val.Value & 0x1) == 1) (
+                               #([ptr] : ($T3)(($e.Val.Val.Value >> 2) << 2))
+                       ) #else (
+                               #([ptr] : ($T1)(($e.Val.Val.Value >> 2) << 2))
+                       )
+               )
+       )
+}
+
+PointerUnion4<*,*,*,*>{
+       preview (
+               #if (($e.Val.Val.Value & 0x3) == 3) (
+                       "PT4"
+               )       #elif (($e.Val.Val.Value & 0x2) == 2) (
+                       "PT2"
+               ) #elif (($e.Val.Val.Value & 0x1) == 1) (
+                       "PT3"
+               ) #else (
+                       "PT1"
+               )
+       )
+       
+       children (
+               #(
+                       #if (($e.Val.Val.Value & 0x3) == 3) (
+                               #([ptr] : ($T4)(($e.Val.Val.Value >> 2) << 2))
+                       )       #elif (($e.Val.Val.Value & 0x2) == 2) (
+                               #([ptr] : ($T2)(($e.Val.Val.Value >> 2) << 2))
+                       ) #elif (($e.Val.Val.Value & 0x1) == 1) (
+                               #([ptr] : ($T3)(($e.Val.Val.Value >> 2) << 2))
+                       ) #else (
+                               #([ptr] : ($T1)(($e.Val.Val.Value >> 2) << 2))
+                       )
+               )
+       )
+}