mspertus created this revision. mspertus added reviewers: aaron.ballman, zturner. mspertus added a subscriber: cfe-commits.
The Visual Studio native visualizer in llvm.natvis displays the actual pointer in a PointerUnion as a void *. E.g. clang::Type const *: 0x02c4a880 Which doesn't make clear what the type looks like. With this change, we will display an actual Type *, resulting in a much better visualization that makes it clear that the clang::Type is a PointerType representing "Int *" clang::Type const *: 0x02c4a880 PointerType: BuiltinType: Int * (Note, the above uses an upcoming visualizer for clang::PointerType because that is my test case, but that is orthogonal to this change). http://reviews.llvm.org/D18076 Files: llvm.natvis Index: llvm.natvis =================================================================== --- llvm.natvis +++ llvm.natvis @@ -54,8 +54,8 @@ </Type> <Type Name="llvm::PointerUnion<*,*>"> - <DisplayString Condition="((Val.Value >> Val.IntShift) & Val.IntMask) == 0">{"$T1", s8b} {(void*)(Val.Value & Val.PointerBitMask)}</DisplayString> - <DisplayString Condition="((Val.Value >> Val.IntShift) & Val.IntMask) != 0">{"$T2", s8b} {(void*)(Val.Value & Val.PointerBitMask)}</DisplayString> + <DisplayString Condition="((Val.Value >> Val.IntShift) & Val.IntMask) == 0">{"$T1", s8b}: {($T1)(Val.Value & Val.PointerBitMask)}</DisplayString> + <DisplayString Condition="((Val.Value >> Val.IntShift) & Val.IntMask) != 0">{"$T2", s8b}: {($T2)(Val.Value & Val.PointerBitMask)}</DisplayString> <Expand> <ExpandedItem Condition="((Val.Value >> Val.IntShift) & Val.IntMask) == 0">($T1)(Val.Value & Val.PointerBitMask)</ExpandedItem> <ExpandedItem Condition="((Val.Value >> Val.IntShift) & Val.IntMask) != 0">($T2)(Val.Value & Val.PointerBitMask)</ExpandedItem>
Index: llvm.natvis =================================================================== --- llvm.natvis +++ llvm.natvis @@ -54,8 +54,8 @@ </Type> <Type Name="llvm::PointerUnion<*,*>"> - <DisplayString Condition="((Val.Value >> Val.IntShift) & Val.IntMask) == 0">{"$T1", s8b} {(void*)(Val.Value & Val.PointerBitMask)}</DisplayString> - <DisplayString Condition="((Val.Value >> Val.IntShift) & Val.IntMask) != 0">{"$T2", s8b} {(void*)(Val.Value & Val.PointerBitMask)}</DisplayString> + <DisplayString Condition="((Val.Value >> Val.IntShift) & Val.IntMask) == 0">{"$T1", s8b}: {($T1)(Val.Value & Val.PointerBitMask)}</DisplayString> + <DisplayString Condition="((Val.Value >> Val.IntShift) & Val.IntMask) != 0">{"$T2", s8b}: {($T2)(Val.Value & Val.PointerBitMask)}</DisplayString> <Expand> <ExpandedItem Condition="((Val.Value >> Val.IntShift) & Val.IntMask) == 0">($T1)(Val.Value & Val.PointerBitMask)</ExpandedItem> <ExpandedItem Condition="((Val.Value >> Val.IntShift) & Val.IntMask) != 0">($T2)(Val.Value & Val.PointerBitMask)</ExpandedItem>
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits