LLVM 20.0.0git
|
#include "llvm/Demangle/ItaniumDemangle.h"
Inherited by AbiTagAttr, ArraySubscriptExpr, ArrayType, BinaryExpr, BinaryFPType, BitIntType, BoolExpr, BracedExpr, BracedRangeExpr, CallExpr, CastExpr, ClosureTypeName, ConditionalExpr, ConstrainedTypeTemplateParamDecl, ConversionExpr, ConversionOperatorType, CtorDtorName, CtorVtableSpecialName, DeleteExpr, DotSuffix, DtorName, DynamicExceptionSpec, ElaboratedTypeSpefType, EnableIfAttr, EnclosingExpr, EnumLiteral, ExpandedSpecialSubstitution, ExplicitObjectParameter, ExprRequirement, FloatLiteralImpl< Float >, FoldExpr, ForwardTemplateReference, FunctionEncoding, FunctionParam, FunctionType, GlobalQualifiedName, InitListExpr, IntegerLiteral, LambdaExpr, LiteralOperator, LocalName, MemberExpr, MemberLikeFriendName, ModuleEntity, ModuleName, NameType, NameWithTemplateArgs, NestedName, NestedRequirement, NewExpr, NodeArrayNode, NoexceptSpec, NonTypeTemplateParamDecl, ObjCProtoName, ParameterPack, ParameterPackExpansion, PixelVectorType, PointerToMemberConversionExpr, PointerToMemberType, PointerType, PostfixExpr, PostfixQualifiedType, PrefixExpr, QualType, QualifiedName, ReferenceType, RequiresExpr, SizeofParamPackExpr, SpecialName, StringLiteral, StructuredBindingName, SubobjectExpr, SyntheticTemplateParamName, TemplateArgs, TemplateArgumentPack, TemplateParamPackDecl, TemplateParamQualifiedArg, TemplateTemplateParamDecl, ThrowExpr, TransformedType, TypeRequirement, TypeTemplateParamDecl, UnnamedTypeName, VectorType, and VendorExtQualType.
Public Types | |
enum | Kind : unsigned char |
enum class | Cache : unsigned char { Yes , No , Unknown } |
Three-way bool to track a cached value. More... | |
enum class | Prec { Primary , Postfix , Unary , Cast , PtrMem , Multiplicative , Additive , Shift , Spaceship , Relational , Equality , And , Xor , Ior , AndIf , OrIf , Conditional , Assign , Comma , Default } |
Operator precedence for expression nodes. More... | |
Public Attributes | |
Cache | RHSComponentCache: 2 |
Tracks if this node has a component on its right side, in which case we need to call printRight. | |
Cache | ArrayCache: 2 |
Track if this node is a (possibly qualified) array type. | |
Cache | FunctionCache: 2 |
Track if this node is a (possibly qualified) function type. | |
Definition at line 161 of file ItaniumDemangle.h.
|
strong |
Three-way bool to track a cached value.
Unknown is possible if this node has an unexpanded parameter pack below it that may affect this cache.
Enumerator | |
---|---|
Yes | |
No | |
Unknown |
Definition at line 170 of file ItaniumDemangle.h.
enum Node::Kind : unsigned char |
Definition at line 163 of file ItaniumDemangle.h.
|
strong |
Operator precedence for expression nodes.
Used to determine required parens in expression emission.
Enumerator | |
---|---|
Primary | |
Postfix | |
Unary | |
Cast | |
PtrMem | |
Multiplicative | |
Additive | |
Shift | |
Spaceship | |
Relational | |
Equality | |
And | |
Xor | |
Ior | |
AndIf | |
OrIf | |
Conditional | |
Assign | |
Comma | |
Default |
Definition at line 174 of file ItaniumDemangle.h.
|
inline |
Definition at line 217 of file ItaniumDemangle.h.
|
inline |
Definition at line 222 of file ItaniumDemangle.h.
|
virtualdefault |
DEMANGLE_DUMP_METHOD void Node::dump | ( | ) | const |
Referenced by llvm::SDValue::dump(), and INITIALIZE_PASS().
|
inlinevirtual |
Reimplemented in NameType, AbiTagAttr, NestedName, MemberLikeFriendName, ModuleEntity, QualifiedName, NameWithTemplateArgs, GlobalQualifiedName, ExpandedSpecialSubstitution, and SpecialSubstitution.
Definition at line 294 of file ItaniumDemangle.h.
Referenced by AbiTagAttr::getBaseName(), NestedName::getBaseName(), MemberLikeFriendName::getBaseName(), ModuleEntity::getBaseName(), and NameWithTemplateArgs::getBaseName().
|
inline |
Definition at line 254 of file ItaniumDemangle.h.
Referenced by ObjCProtoName::isObjCObject(), AbstractManglingParser< Derived, Alloc >::parseCtorDtorName(), AbstractManglingParser< Derived, Alloc >::parseNestedName(), AbstractManglingParser< Derived, Alloc >::parseTemplateArgs(), AbstractManglingParser< Derived, Alloc >::parseTemplateParam(), AbstractManglingParser< Derived, Alloc >::parseUnscopedName(), BracedExpr::printLeft(), and BracedRangeExpr::printLeft().
|
inline |
Definition at line 256 of file ItaniumDemangle.h.
Referenced by BinaryExpr::match(), ArraySubscriptExpr::match(), PostfixExpr::match(), ConditionalExpr::match(), MemberExpr::match(), EnclosingExpr::match(), CastExpr::match(), CallExpr::match(), NewExpr::match(), DeleteExpr::match(), PrefixExpr::match(), ConversionExpr::match(), PointerToMemberConversionExpr::match(), printAsOperand(), BinaryExpr::printLeft(), ArraySubscriptExpr::printLeft(), PostfixExpr::printLeft(), ConditionalExpr::printLeft(), MemberExpr::printLeft(), and PrefixExpr::printLeft().
|
inlinevirtual |
Reimplemented in ParameterPack, and ForwardTemplateReference.
Definition at line 264 of file ItaniumDemangle.h.
Referenced by ForwardTemplateReference::getSyntaxNode().
|
inline |
Definition at line 242 of file ItaniumDemangle.h.
References ArrayCache, hasArraySlow(), Unknown, and Yes.
Referenced by QualType::hasArraySlow(), ForwardTemplateReference::hasArraySlow(), PointerToMemberType::printLeft(), and PointerToMemberType::printRight().
|
inlinevirtual |
Reimplemented in ArrayType, QualType, ParameterPack, and ForwardTemplateReference.
Definition at line 259 of file ItaniumDemangle.h.
Referenced by hasArray().
|
inline |
Definition at line 248 of file ItaniumDemangle.h.
References FunctionCache, hasFunctionSlow(), Unknown, and Yes.
Referenced by QualType::hasFunctionSlow(), ForwardTemplateReference::hasFunctionSlow(), PointerToMemberType::printLeft(), and PointerToMemberType::printRight().
|
inlinevirtual |
Reimplemented in FunctionType, FunctionEncoding, QualType, ParameterPack, and ForwardTemplateReference.
Definition at line 260 of file ItaniumDemangle.h.
Referenced by hasFunction().
|
inline |
Definition at line 236 of file ItaniumDemangle.h.
References hasRHSComponentSlow(), RHSComponentCache, Unknown, and Yes.
Referenced by QualType::hasRHSComponentSlow(), ReferenceType::hasRHSComponentSlow(), PointerToMemberType::hasRHSComponentSlow(), and ForwardTemplateReference::hasRHSComponentSlow().
|
inlinevirtual |
Reimplemented in ArrayType, FunctionType, FunctionEncoding, QualType, PointerType, ReferenceType, PointerToMemberType, ParameterPack, and ForwardTemplateReference.
Definition at line 258 of file ItaniumDemangle.h.
Referenced by hasRHSComponent().
|
inline |
Definition at line 279 of file ItaniumDemangle.h.
References No, printLeft(), printRight(), and RHSComponentCache.
Referenced by llvm::ItaniumPartialDemangler::getFunctionDeclContextName(), printAsOperand(), ClosureTypeName::printDeclarator(), ElaboratedTypeSpefType::printLeft(), ObjCProtoName::printLeft(), SpecialName::printLeft(), CtorVtableSpecialName::printLeft(), NestedName::printLeft(), MemberLikeFriendName::printLeft(), ModuleName::printLeft(), ModuleEntity::printLeft(), LocalName::printLeft(), TemplateParamQualifiedArg::printLeft(), NameWithTemplateArgs::printLeft(), SubobjectExpr::printLeft(), EnclosingExpr::printLeft(), PointerToMemberConversionExpr::printLeft(), InitListExpr::printLeft(), BracedExpr::printLeft(), BracedRangeExpr::printLeft(), FoldExpr::printLeft(), EnumLiteral::printLeft(), ExprRequirement::printLeft(), NestedRequirement::printLeft(), printNode(), FunctionType::printRight(), FunctionEncoding::printRight(), and TemplateTemplateParamDecl::printRight().
|
inline |
Definition at line 268 of file ItaniumDemangle.h.
References getPrecedence(), P, and print().
Referenced by llvm::DOTGraphTraits< DOTFuncInfo * >::getBBName(), getSimpleNodeName(), llvm::operator<<(), llvm::DOTGraphTraits< DOTFuncInfo * >::printBasicBlock(), NoexceptSpec::printLeft(), ArraySubscriptExpr::printLeft(), PostfixExpr::printLeft(), PrefixExpr::printLeft(), FoldExpr::printLeft(), and llvm::SimpleNodeLabelString().
|
pure virtual |
Implemented in NodeArrayNode, DotSuffix, VendorExtQualType, QualType, ConversionOperatorType, PostfixQualifiedType, NameType, BitIntType, ElaboratedTypeSpefType, TransformedType, AbiTagAttr, EnableIfAttr, ObjCProtoName, PointerType, ReferenceType, PointerToMemberType, ArrayType, FunctionType, NoexceptSpec, DynamicExceptionSpec, ExplicitObjectParameter, FunctionEncoding, LiteralOperator, SpecialName, CtorVtableSpecialName, NestedName, MemberLikeFriendName, ModuleName, ModuleEntity, LocalName, QualifiedName, VectorType, PixelVectorType, BinaryFPType, SyntheticTemplateParamName, TemplateParamQualifiedArg, TypeTemplateParamDecl, ConstrainedTypeTemplateParamDecl, NonTypeTemplateParamDecl, TemplateTemplateParamDecl, TemplateParamPackDecl, ParameterPack, TemplateArgumentPack, ParameterPackExpansion, TemplateArgs, ForwardTemplateReference, NameWithTemplateArgs, GlobalQualifiedName, SpecialSubstitution, CtorDtorName, DtorName, UnnamedTypeName, ClosureTypeName, StructuredBindingName, BinaryExpr, ArraySubscriptExpr, PostfixExpr, ConditionalExpr, MemberExpr, SubobjectExpr, EnclosingExpr, CastExpr, SizeofParamPackExpr, CallExpr, NewExpr, DeleteExpr, PrefixExpr, FunctionParam, ConversionExpr, PointerToMemberConversionExpr, InitListExpr, BracedExpr, BracedRangeExpr, FoldExpr, ThrowExpr, BoolExpr, StringLiteral, LambdaExpr, EnumLiteral, IntegerLiteral, RequiresExpr, ExprRequirement, TypeRequirement, NestedRequirement, and FloatLiteralImpl< Float >.
Referenced by print(), QualType::printLeft(), AbiTagAttr::printLeft(), PointerToMemberType::printLeft(), ForwardTemplateReference::printLeft(), and CastExpr::printLeft().
|
inlinevirtual |
Reimplemented in QualType, PointerType, ReferenceType, PointerToMemberType, ArrayType, FunctionType, FunctionEncoding, TypeTemplateParamDecl, ConstrainedTypeTemplateParamDecl, NonTypeTemplateParamDecl, TemplateTemplateParamDecl, TemplateParamPackDecl, ParameterPack, and ForwardTemplateReference.
Definition at line 292 of file ItaniumDemangle.h.
Referenced by print(), QualType::printRight(), PointerToMemberType::printRight(), and ForwardTemplateReference::printRight().
void Node::visit | ( | Fn | F | ) | const |
Visit the most-derived object corresponding to this object.
Visit the node.
Calls F(P)
, where P
is the node cast to the appropriate derived class.
Definition at line 2588 of file ItaniumDemangle.h.
References DEMANGLE_ASSERT.
Cache Node::ArrayCache |
Track if this node is a (possibly qualified) array type.
This can affect how we format the output string.
Definition at line 210 of file ItaniumDemangle.h.
Referenced by hasArray(), and ParameterPack::ParameterPack().
Cache Node::FunctionCache |
Track if this node is a (possibly qualified) function type.
This can affect how we format the output string.
Definition at line 214 of file ItaniumDemangle.h.
Referenced by hasFunction(), and ParameterPack::ParameterPack().
Cache Node::RHSComponentCache |
Tracks if this node has a component on its right side, in which case we need to call printRight.
Definition at line 206 of file ItaniumDemangle.h.
Referenced by hasRHSComponent(), ParameterPack::ParameterPack(), and print().