Author: Aaron Ballman Date: 2023-05-11T09:28:57-04:00 New Revision: 4bc75f046018bcc81ede90d548f95da8ed14f1a9
URL: https://github.com/llvm/llvm-project/commit/4bc75f046018bcc81ede90d548f95da8ed14f1a9 DIFF: https://github.com/llvm/llvm-project/commit/4bc75f046018bcc81ede90d548f95da8ed14f1a9.diff LOG: Fixed NATVIS debug visualizers for Clang This fixes the visualizers for: Type DeclContext QualType TypedefNameDecl NestedNameSpecifier FunctionDecl and adds visualizers for: VariableArrayType ElaboratedType ParenType BitIntType Added: Modified: clang/utils/ClangVisualizers/clang.natvis Removed: ################################################################################ diff --git a/clang/utils/ClangVisualizers/clang.natvis b/clang/utils/ClangVisualizers/clang.natvis index 3e6148cd5e05c..ff949ce490d19 100644 --- a/clang/utils/ClangVisualizers/clang.natvis +++ b/clang/utils/ClangVisualizers/clang.natvis @@ -25,11 +25,16 @@ For later versions of Visual Studio, no setup is required--> <!-- Dispatch to visualizers for the actual Type subclass --> <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::Builtin" IncludeView="poly">{*(clang::BuiltinType *)this}</DisplayString> <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::Pointer" IncludeView="poly">{*(clang::PointerType *)this}</DisplayString> + <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::Paren" IncludeView="poly">{*(clang::ParenType *)this}</DisplayString> + <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::BitInt" IncludeView="poly">{(clang::BitIntType *)this}</DisplayString> <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::LValueReference" IncludeView="poly">{*(clang::LValueReferenceType *)this}</DisplayString> <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::RValueReference" IncludeView="poly">{*(clang::RValueReferenceType *)this}</DisplayString> <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::ConstantArray" IncludeView="poly">{(clang::ConstantArrayType *)this,na}</DisplayString> <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::ConstantArray" IncludeView="left">{(clang::ConstantArrayType *)this,view(left)na}</DisplayString> <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::ConstantArray" IncludeView="right">{(clang::ConstantArrayType *)this,view(right)na}</DisplayString> + <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::VariableArray" IncludeView="poly">{(clang::VariableArrayType *)this,na}</DisplayString> + <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::VariableArray" IncludeView="left">{(clang::VariableArrayType *)this,view(left)na}</DisplayString> + <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::VariableArray" IncludeView="right">{(clang::VariableArrayType *)this,view(right)na}</DisplayString> <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::IncompleteArray" IncludeView="poly">{(clang::IncompleteArrayType *)this,na}</DisplayString> <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::IncompleteArray" IncludeView="left">{(clang::IncompleteArrayType *)this,view(left)na}</DisplayString> <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::IncompleteArray" IncludeView="right">{(clang::IncompleteArrayType *)this,view(right)na}</DisplayString> @@ -39,6 +44,9 @@ For later versions of Visual Studio, no setup is required--> <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::Decayed" IncludeView="poly">{(clang::DecayedType *)this,na}</DisplayString> <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::Decayed" IncludeView="left">{(clang::DecayedType *)this,view(left)na}</DisplayString> <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::Decayed" IncludeView="right">{(clang::DecayedType *)this,view(right)na}</DisplayString> + <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::Elaborated" IncludeView="poly">{(clang::ElaboratedType *)this,na}</DisplayString> + <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::Elaborated" IncludeView="left">{(clang::ElaboratedType *)this,view(left)na}</DisplayString> + <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::Elaborated" IncludeView="right">{(clang::ElaboratedType *)this,view(right)na}</DisplayString> <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::TemplateTypeParm" IncludeView="poly">{*(clang::TemplateTypeParmType *)this}</DisplayString> <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::TemplateTypeParm" IncludeView="cpp">{*(clang::TemplateTypeParmType *)this,view(cpp)}</DisplayString> <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::SubstTemplateTypeParm" IncludeView="poly">{*(clang::SubstTemplateTypeParmType *)this}</DisplayString> @@ -59,25 +67,17 @@ For later versions of Visual Studio, no setup is required--> <DisplayString IncludeView="left">{*this,view(cpp)}</DisplayString> <DisplayString IncludeView="right"></DisplayString> <DisplayString IncludeView="poly">No visualizer yet for {(clang::Type::TypeClass)TypeBits.TC,en}Type</DisplayString> <!-- Not yet implemented Type subclass --> - <DisplayString IncludeView="Dependent" Condition="TypeBits.Dependent">Dependent{" ",sb}</DisplayString> - <DisplayString IncludeView="Dependent"></DisplayString> - <DisplayString IncludeView="InstantiationDependent" Condition="TypeBits.InstantiationDependent">InstantiationDependent{" ",sb}</DisplayString> - <DisplayString IncludeView="InstantiationDependent"></DisplayString> - <DisplayString IncludeView="VariablyModified" Condition="TypeBits.VariablyModified">VariablyModified{" ",sb}</DisplayString> - <DisplayString IncludeView="VariablyModified"></DisplayString> - <DisplayString IncludeView="ContainsUnexpandedParameterPack" Condition="TypeBits.ContainsUnexpandedParameterPack">ContainsUnexpandedParameterPack{" ",sb}</DisplayString> - <DisplayString IncludeView="ContainsUnexpandedParameterPack"></DisplayString> + <DisplayString IncludeView="Dependence" Condition="TypeBits.Dependence">Dependence{" ",en}</DisplayString> + <DisplayString IncludeView="Dependence"></DisplayString> <DisplayString IncludeView="Cache" Condition="TypeBits.CacheValid && TypeBits.CachedLocalOrUnnamed">CachedLinkage: {(clang::Linkage)TypeBits.CachedLinkage,en} CachedLocalOrUnnamed</DisplayString> <DisplayString IncludeView="Cache" Condition="TypeBits.CacheValid && !TypeBits.CachedLocalOrUnnamed">CachedLinkage: {(clang::Linkage)TypeBits.CachedLinkage,en}{" ",sb}</DisplayString> <DisplayString IncludeView="Cache"></DisplayString> <DisplayString IncludeView="FromAST" Condition="TypeBits.FromAST">FromAST</DisplayString> <DisplayString IncludeView="FromAST"></DisplayString> - <DisplayString IncludeView="flags" Condition="!TypeBits.Dependent && !TypeBits.InstantiationDependent && !TypeBits.VariablyModified && !TypeBits.ContainsUnexpandedParameterPack && !TypeBits.CacheValid && !TypeBits.FromAST"> + <DisplayString IncludeView="flags" Condition="!TypeBits.Dependence && !TypeBits.CacheValid && !TypeBits.FromAST"> No TypeBits set beyond TypeClass </DisplayString> - <DisplayString IncludeView="flags"> -{*this, view(Dependent)}{*this, view(InstantiationDependent)}{*this, view(VariablyModified)} -{*this, view(ContainsUnexpandedParameterPack)}{*this, view(Cache)}{*this, view(FromAST)}</DisplayString> + <DisplayString IncludeView="flags">{*this, view(Dependence)}{*this, view(Cache)}{*this, view(FromAST)}</DisplayString> <DisplayString>{*this,view(cmn)} {{{*this,view(poly)}}}</DisplayString> <Expand> <Item Name="TypeClass" IncludeView="cmn">(clang::Type::TypeClass)TypeBits.TC</Item> @@ -85,12 +85,16 @@ For later versions of Visual Studio, no setup is required--> <Item Name="Canonical" IncludeView="cmn">CanonicalType</Item> <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::Builtin">*(clang::BuiltinType *)this</ExpandedItem> <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::Pointer">*(clang::PointerType *)this</ExpandedItem> + <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::Paren">*(clang::ParenType*)this</ExpandedItem> + <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::BitInt">*(clang::BitIntType*)this</ExpandedItem> <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::LValueReference">*(clang::LValueReferenceType *)this</ExpandedItem> <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::RValueReference">*(clang::RValueReferenceType *)this</ExpandedItem> <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::ConstantArray">(clang::ConstantArrayType *)this</ExpandedItem> + <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::VariableArray">(clang::VariableArrayType *)this</ExpandedItem> <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::IncompleteArray">(clang::IncompleteArrayType *)this</ExpandedItem> <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::Attributed">*(clang::AttributedType *)this</ExpandedItem> <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::Decayed">(clang::DecayedType *)this</ExpandedItem> + <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::Elaborated">(clang::ElaboratedType *)this</ExpandedItem> <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::TemplateTypeParm">(clang::TemplateTypeParmType *)this</ExpandedItem> <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::SubstTemplateTypeParm">(clang::SubstTemplateTypeParmType *)this</ExpandedItem> <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::Record">(clang::RecordType *)this</ExpandedItem> @@ -125,6 +129,15 @@ For later versions of Visual Studio, no setup is required--> <ExpandedItem>(clang::ArrayType *)this</ExpandedItem> </Expand> </Type> + <Type Name="clang::VariableArrayType"> + <DisplayString IncludeView="left">{ElementType,view(cpp)}</DisplayString> + <DisplayString IncludeView="right">[*]</DisplayString> + <DisplayString>{ElementType,view(cpp)}[*]</DisplayString> + <Expand> + <Item Name="[Size Expression]">(clang::Expr *)SizeExpr</Item> + <ExpandedItem>(clang::ArrayType *)this</ExpandedItem> + </Expand> + </Type> <Type Name="clang::TypedefType"> <DisplayString IncludeView="cpp">{Decl,view(name)nd}</DisplayString> <DisplayString>{Decl}</DisplayString> @@ -140,6 +153,21 @@ For later versions of Visual Studio, no setup is required--> <ExpandedItem>*(clang::Type *)this, view(cmn)</ExpandedItem> </Expand> </Type> + <Type Name="clang::ParenType"> + <DisplayString>{Inner, view(cpp)}</DisplayString> + <Expand> + <Item Name="Inner">Inner</Item> + <ExpandedItem>*(clang::Type *)this, view(cmn)</ExpandedItem> + </Expand> + </Type> + <Type Name="clang::BitIntType"> + <DisplayString Condition="!IsUnsigned">signed _BitInt({NumBits})</DisplayString> + <DisplayString Condition="!IsUnsigned">unsigned _BitInt({NumBits})(</DisplayString> + <Expand> + <Item Name="NumBits">NumBits</Item> + <ExpandedItem>(clang::Type *)this, view(cmn)</ExpandedItem> + </Expand> + </Type> <!-- We visualize all inner types for clang reference types. So a rvalue reference to an lvalue reference to an int would visual as int & && This is a little diff erent than GetPointeeType(), but more clearly displays the data structure and seems natural --> @@ -171,7 +199,7 @@ For later versions of Visual Studio, no setup is required--> <Expand> <LinkedListItems> <HeadPointer>FirstDecl</HeadPointer> - <NextPointer>(clang::Decl *)(NextInContextAndBits.Value & ~3)</NextPointer> + <NextPointer>(clang::Decl *)(*(intptr_t *)NextInContextAndBits.Value.Data & ~3)</NextPointer> <ValueNode>*this</ValueNode> </LinkedListItems> </Expand> @@ -213,15 +241,15 @@ For later versions of Visual Studio, no setup is required--> </Type> <!-- Unfortunately, visualization of PointerIntPair<PointerUnion> doesn't work due to limitations in natvis, so we will barehad it--> <Type Name="clang::TypedefNameDecl"> - <DisplayString Condition="(MaybeModedTInfo.Value & 4)==0" IncludeView="type">{(clang::TypeSourceInfo *)(MaybeModedTInfo.Value & ~7LL),view(cpp)na}</DisplayString> - <DisplayString Condition="(MaybeModedTInfo.Value & 4)!=0" IncludeView="type">{(clang::TypedefNameDecl::ModedTInfo *)(MaybeModedTInfo.Value & ~7LL),view(cpp)na}</DisplayString> + <DisplayString Condition="(*(uintptr_t *)MaybeModedTInfo.Value.Data & 4)==0" IncludeView="type">{(clang::TypeSourceInfo *)(*(uintptr_t *)MaybeModedTInfo.Value.Data & ~7LL),view(cpp)na}</DisplayString> + <DisplayString Condition="(*(uintptr_t *)MaybeModedTInfo.Value.Data & 4)!=0" IncludeView="type">{(clang::TypedefNameDecl::ModedTInfo *)(*(uintptr_t *)MaybeModedTInfo.Value.Data & ~7LL),view(cpp)na}</DisplayString> <DisplayString IncludeView="name">{(TypeDecl *)this,view(cpp)nand}</DisplayString> <DisplayString>typedef {this,view(type)na} {this,view(name)na};</DisplayString> <Expand> - <Item Name="IsTransparent" Condition="(MaybeModedTInfo.Value & 1)==0">"Not yet calculated",sb</Item> - <Item Name="IsTransparent" Condition="(MaybeModedTInfo.Value & 1)!=0">(bool)(MaybeModedTInfo.Value & 2)</Item> - <Item Name="TypeSourceInfo" Condition="(MaybeModedTInfo.Value & 4)==0">(clang::TypeSourceInfo *)(MaybeModedTInfo.Value & ~7LL)</Item> - <Item Name="ModedTInfo" Condition="(MaybeModedTInfo.Value & 4)!=0">(clang::TypedefNameDecl::ModedTInfo *)(MaybeModedTInfo.Value & ~7LL)</Item> + <Item Name="IsTransparent" Condition="(*(uintptr_t *)MaybeModedTInfo.Value.Data & 1)==0">"Not yet calculated",sb</Item> + <Item Name="IsTransparent" Condition="(*(uintptr_t *)MaybeModedTInfo.Value.Data & 1)!=0">(bool)(*(uintptr_t *)MaybeModedTInfo.Value.Data & 2)</Item> + <Item Name="TypeSourceInfo" Condition="(*(uintptr_t *)MaybeModedTInfo.Value.Data & 4)==0">(clang::TypeSourceInfo *)(*(uintptr_t *)MaybeModedTInfo.Value.Data & ~7LL)</Item> + <Item Name="ModedTInfo" Condition="(*(uintptr_t *)MaybeModedTInfo.Value.Data & 4)!=0">(clang::TypedefNameDecl::ModedTInfo *)(*(uintptr_t *)MaybeModedTInfo.Value.Data & ~7LL)</Item> <ExpandedItem>(TypeDecl *)this,nd</ExpandedItem> </Expand> </Type> @@ -400,6 +428,16 @@ For later versions of Visual Studio, no setup is required--> <ExpandedItem>(clang::AdjustedType *)this</ExpandedItem> </Expand> </Type> + <Type Name="clang::ElaboratedType"> + <DisplayString IncludeView="left">{NamedType,view(left)}</DisplayString> + <DisplayString IncludeView="right">{NamedType,view(right)}</DisplayString> + <DisplayString>{NamedType}</DisplayString> + <Expand> + <Item Name="[Keyword]">(clang::ElaboratedTypeKeyword)TypeWithKeywordBits.Keyword</Item> + <Item Name="[Nested Name Specifier]">NNS</Item> + <Item Name="[Underlying Type]">NamedType,view(cmn)</Item> + </Expand> + </Type> <Type Name="clang::TemplateTypeParmType"> <DisplayString IncludeView="cpp" Condition="CanonicalType.Value.Value != this">{TTPDecl->Name,view(cpp)}</DisplayString> <DisplayString Condition="CanonicalType.Value.Value != this">Non-canonical: {*TTPDecl}</DisplayString> @@ -426,11 +464,11 @@ For later versions of Visual Studio, no setup is required--> </Type> <Type Name="clang::NestedNameSpecifier"> <DisplayString Condition="!Specifier"></DisplayString> - <DisplayString Condition="((Prefix.Value>>1)&3) == 0">{(IdentifierInfo*)Specifier,view(cpp)na}::</DisplayString> - <DisplayString Condition="((Prefix.Value>>1)&3) == 1">{(NamedDecl*)Specifier,view(cpp)na}::</DisplayString> - <DisplayString Condition="((Prefix.Value>>1)&2) == 2">{(Type*)Specifier,view(cpp)na}::</DisplayString> + <DisplayString Condition="((*(uintptr_t *)Prefix.Value.Data>>1)&3) == 0">{(IdentifierInfo*)Specifier,view(cpp)na}::</DisplayString> + <DisplayString Condition="((*(uintptr_t *)Prefix.Value.Data>>1)&3) == 1">{(NamedDecl*)Specifier,view(cpp)na}::</DisplayString> + <DisplayString Condition="((*(uintptr_t *)Prefix.Value.Data>>1)&3) == 2">{(Type*)Specifier,view(cpp)na}::</DisplayString> <Expand> - <Item Name="Kind">(NestedNameSpecifier::StoredSpecifierKind)((Prefix.Value>>1)&3)</Item> + <Item Name="Kind">(NestedNameSpecifier::StoredSpecifierKind)((*(uintptr_t *)Prefix.Value.Data>>1)&3)</Item> </Expand> </Type> <Type Name="clang::PackExpansionType"> @@ -442,28 +480,28 @@ For later versions of Visual Studio, no setup is required--> </Expand> </Type> <Type Name="clang::QualType"> - <!-- When VS2013 support is deprecated, change 4 to clang::TypeAlignmentInBits (not properly recognized by VS2013) --> - <DisplayString IncludeView="poly">{*((clang::ExtQualsTypeCommonBase *)(((uintptr_t)Value.Value) & ~(uintptr_t)((1 << 4) - 1)))->BaseType,view(poly)}{*this,view(fastQuals)}</DisplayString> - <DisplayString IncludeView="cpp">{*((clang::ExtQualsTypeCommonBase *)(((uintptr_t)Value.Value) & ~(uintptr_t)((1 << 4) - 1)))->BaseType,view(cpp)}{*this,view(fastQuals)}</DisplayString> - <DisplayString IncludeView="left">{*((clang::ExtQualsTypeCommonBase *)(((uintptr_t)Value.Value) & ~(uintptr_t)((1 << 4) - 1)))->BaseType,view(left)}{*this,view(fastQuals)}</DisplayString> - <DisplayString IncludeView="right">{*((clang::ExtQualsTypeCommonBase *)(((uintptr_t)Value.Value) & ~(uintptr_t)((1 << 4) - 1)))->BaseType,view(right)}{*this,view(fastQuals)}</DisplayString> + <DisplayString IncludeView="poly">{((clang::ExtQualsTypeCommonBase *)((*(uintptr_t *)Value.Value.Data) & ~(uintptr_t)((1U << clang::TypeAlignmentInBits) - 1U)))->BaseType,view(poly)}{*this,view(fastQuals)}</DisplayString> + <DisplayString IncludeView="cpp">{((clang::ExtQualsTypeCommonBase *)((*(uintptr_t *)Value.Value.Data) & ~(uintptr_t)((1U << clang::TypeAlignmentInBits) - 1U)))->BaseType,view(cpp)}{*this,view(fastQuals)}</DisplayString> + <DisplayString IncludeView="left">{((clang::ExtQualsTypeCommonBase *)((*(uintptr_t *)Value.Value.Data) & ~(uintptr_t)((1U << clang::TypeAlignmentInBits) - 1U)))->BaseType,view(left)}{*this,view(fastQuals)}</DisplayString> + <DisplayString IncludeView="right">{((clang::ExtQualsTypeCommonBase *)((*(uintptr_t *)Value.Value.Data) & ~(uintptr_t)((1U << clang::TypeAlignmentInBits) - 1U)))->BaseType,view(right)}{*this,view(fastQuals)}</DisplayString> <!-- For the Fast Qualifiers, it is simpler (and probably more efficient) just to list all 8 cases than create views for each qualifier. TODO: Non-fast qualifiers --> - <DisplayString IncludeView="fastQuals" Condition="(Value.Value & 15)==0"></DisplayString> - <DisplayString IncludeView="fastQuals" Condition="(Value.Value & 15)==1">{" ",sb}const</DisplayString> - <DisplayString IncludeView="fastQuals" Condition="(Value.Value & 15)==2">{" ",sb}restrict</DisplayString> - <DisplayString IncludeView="fastQuals" Condition="(Value.Value & 15)==3">{" ",sb}const restrict</DisplayString> - <DisplayString IncludeView="fastQuals" Condition="(Value.Value & 15)==4">{" ",sb}volatile</DisplayString> - <DisplayString IncludeView="fastQuals" Condition="(Value.Value & 15)==5">{" ",sb}const volatile</DisplayString> - <DisplayString IncludeView="fastQuals" Condition="(Value.Value & 15)==6">{" ",sb}volatile restrict</DisplayString> - <DisplayString IncludeView="fastQuals" Condition="(Value.Value & 15)==7">{" ",sb}const volatile restrict</DisplayString> + <DisplayString IncludeView="fastQuals" Condition="(((*(uintptr_t *)Value.Value.Data) >> 1) & 7)==0"></DisplayString> + <DisplayString IncludeView="fastQuals" Condition="(((*(uintptr_t *)Value.Value.Data) >> 1) & 7)==1">{" ",sb}const</DisplayString> + <DisplayString IncludeView="fastQuals" Condition="(((*(uintptr_t *)Value.Value.Data) >> 1) & 7)==2">{" ",sb}restrict</DisplayString> + <DisplayString IncludeView="fastQuals" Condition="(((*(uintptr_t *)Value.Value.Data) >> 1) & 7)==3">{" ",sb}const restrict</DisplayString> + <DisplayString IncludeView="fastQuals" Condition="(((*(uintptr_t *)Value.Value.Data) >> 1) & 7)==4">{" ",sb}volatile</DisplayString> + <DisplayString IncludeView="fastQuals" Condition="(((*(uintptr_t *)Value.Value.Data) >> 1) & 7)==5">{" ",sb}const volatile</DisplayString> + <DisplayString IncludeView="fastQuals" Condition="(((*(uintptr_t *)Value.Value.Data) >> 1) & 7)==6">{" ",sb}volatile restrict</DisplayString> + <DisplayString IncludeView="fastQuals" Condition="(((*(uintptr_t *)Value.Value.Data) >> 1) & 7)==7">{" ",sb}const volatile restrict</DisplayString> <DisplayString IncludeView="fastQuals">Cannot visualize non-fast qualifiers</DisplayString> - <DisplayString Condition="(uintptr_t)Value.Value == 0">Null</DisplayString> - <DisplayString>{((clang::ExtQualsTypeCommonBase *)(((uintptr_t)Value.Value) & ~(uintptr_t)((1 << 4) - 1)))->BaseType,na}{*this,view(fastQuals)}</DisplayString> + <DisplayString Condition="(*(uintptr_t *)Value.Value.Data) == 0">Null</DisplayString> + <DisplayString>{((clang::ExtQualsTypeCommonBase *)((*(uintptr_t *)Value.Value.Data) & ~(uintptr_t)((1U << clang::TypeAlignmentInBits) - 1U)))->BaseType,na}{*this,view(fastQuals)}</DisplayString> <Expand> <Item Name="Fast Quals">*this,view(fastQuals)</Item> - <ExpandedItem>((clang::ExtQualsTypeCommonBase *)(((uintptr_t)Value.Value) & ~(uintptr_t)((1 << 4) - 1)))->BaseType</ExpandedItem> + <ExpandedItem>((clang::ExtQualsTypeCommonBase *)((*(uintptr_t *)Value.Value.Data) & ~(uintptr_t)((1U << clang::TypeAlignmentInBits) - 1U)))->BaseType</ExpandedItem> </Expand> + </Type> <Type Name="clang::LocInfoType"> <DisplayString IncludeView="cpp">{DeclInfo,view(cpp)na}</DisplayString> @@ -889,31 +927,31 @@ For later versions of Visual Studio, no setup is required--> </Expand> </Type> <Type Name="clang::FunctionDecl"> - <DisplayString IncludeView="retType">{((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->ResultType,view(cpp)}</DisplayString> - <DisplayString IncludeView="parm0" Condition="0 == ((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->FunctionTypeBits.NumParams"></DisplayString> + <DisplayString IncludeView="retType">{((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)((*(uintptr_t *)DeclType.Value.Value.Data) & ~15))->BaseType)->ResultType,view(cpp)}</DisplayString> + <DisplayString IncludeView="parm0" Condition="0 == ((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)((*(uintptr_t *)DeclType.Value.Value.Data) & ~15))->BaseType)->FunctionTypeBits.NumParams"></DisplayString> <DisplayString IncludeView="parm0">{ParamInfo[0],na}{*this,view(parm1)nd}</DisplayString> - <DisplayString IncludeView="parm1" Condition="1 == ((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->FunctionTypeBits.NumParams"></DisplayString> + <DisplayString IncludeView="parm1" Condition="1 == ((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)((*(uintptr_t *)DeclType.Value.Value.Data) & ~15))->BaseType)->FunctionTypeBits.NumParams"></DisplayString> <DisplayString IncludeView="parm1">, {ParamInfo[1],na}{*this,view(parm2)nd}</DisplayString> - <DisplayString IncludeView="parm2" Condition="2 == ((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->FunctionTypeBits.NumParams"></DisplayString> + <DisplayString IncludeView="parm2" Condition="2 == ((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)((*(uintptr_t *)DeclType.Value.Value.Data) & ~15))->BaseType)->FunctionTypeBits.NumParams"></DisplayString> <DisplayString IncludeView="parm2">, {ParamInfo[2],na}{*this,view(parm3)nd}</DisplayString> - <DisplayString IncludeView="parm3" Condition="3 == ((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->FunctionTypeBits.NumParams"></DisplayString> + <DisplayString IncludeView="parm3" Condition="3 == ((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)((*(uintptr_t *)DeclType.Value.Value.Data) & ~15))->BaseType)->FunctionTypeBits.NumParams"></DisplayString> <DisplayString IncludeView="parm3">, {ParamInfo[3],na}{*this,view(parm4)nd}</DisplayString> - <DisplayString IncludeView="parm4" Condition="4 == ((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->FunctionTypeBits.NumParams"></DisplayString> + <DisplayString IncludeView="parm4" Condition="4 == ((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)((*(uintptr_t *)DeclType.Value.Value.Data) & ~15))->BaseType)->FunctionTypeBits.NumParams"></DisplayString> <DisplayString IncludeView="parm4">, {ParamInfo[4],na}{*this,view(parm5)nd}</DisplayString> - <DisplayString IncludeView="parm5" Condition="5 == ((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->FunctionTypeBits.NumParams"></DisplayString> + <DisplayString IncludeView="parm5" Condition="5 == ((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)((*(uintptr_t *)DeclType.Value.Value.Data) & ~15))->BaseType)->FunctionTypeBits.NumParams"></DisplayString> <DisplayString IncludeView="parm5">, /* expand for more params */</DisplayString> - <DisplayString Condition="((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->FunctionTypeBits.HasTrailingReturn"> - auto {Name,view(cpp)nd}({*this,view(parm0)nd}) -> {((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->ResultType,view(cpp)} + <DisplayString Condition="((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)((*(uintptr_t *)DeclType.Value.Value.Data) & ~15))->BaseType)->FunctionTypeBits.HasTrailingReturn"> + auto {Name,view(cpp)nd}({*this,view(parm0)nd}) -> {((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)((*(uintptr_t *)DeclType.Value.Value.Data) & ~15))->BaseType)->ResultType,view(cpp)} </DisplayString> <DisplayString>{this,view(retType)nand} {Name,view(cpp)nd}({*this,view(parm0)nd})</DisplayString> <Expand> <ExpandedItem>(clang::DeclaratorDecl *)this,nd</ExpandedItem> - <Item Name="ReturnType">((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->ResultType</Item> + <Item Name="ReturnType">((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)((*(uintptr_t *)DeclType.Value.Value.Data) & ~15))->BaseType)->ResultType</Item> <Synthetic Name="Parameter Types"> <DisplayString>{*this,view(parm0)nd}</DisplayString> <Expand> <ArrayItems> - <Size>((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->FunctionTypeBits.NumParams</Size> + <Size>((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)((*(uintptr_t *)DeclType.Value.Value.Data) & ~15))->BaseType)->FunctionTypeBits.NumParams</Size> <ValuePointer>ParamInfo</ValuePointer> </ArrayItems> </Expand> _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits