LLVM 22.0.0git
|
#include "llvm/Demangle/ItaniumDemangle.h"
Inherited by FloatLiteralImpl< float >, FloatLiteralImpl< double >, FloatLiteralImpl< long double >, 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 : uint8_t |
enum class | Cache : uint8_t { Yes , No , Unknown } |
Three-way bool to track a cached value. More... | |
enum class | Prec : uint8_t { 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... |
Protected 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. |
Friends | |
class | OutputBuffer |
Definition at line 166 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 175 of file ItaniumDemangle.h.
enum Node::Kind : uint8_t |
Definition at line 168 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 179 of file ItaniumDemangle.h.
|
inline |
Definition at line 221 of file ItaniumDemangle.h.
References ArrayCache, FunctionCache, No, Primary, and RHSComponentCache.
Referenced by AbiTagAttr::AbiTagAttr(), ArraySubscriptExpr::ArraySubscriptExpr(), ArrayType::ArrayType(), BinaryExpr::BinaryExpr(), BinaryFPType::BinaryFPType(), BitIntType::BitIntType(), BoolExpr::BoolExpr(), BracedExpr::BracedExpr(), BracedRangeExpr::BracedRangeExpr(), CallExpr::CallExpr(), CastExpr::CastExpr(), ClosureTypeName::ClosureTypeName(), ConditionalExpr::ConditionalExpr(), ConstrainedTypeTemplateParamDecl::ConstrainedTypeTemplateParamDecl(), ConversionExpr::ConversionExpr(), ConversionOperatorType::ConversionOperatorType(), CtorDtorName::CtorDtorName(), CtorVtableSpecialName::CtorVtableSpecialName(), DeleteExpr::DeleteExpr(), DotSuffix::DotSuffix(), DtorName::DtorName(), DynamicExceptionSpec::DynamicExceptionSpec(), ElaboratedTypeSpefType::ElaboratedTypeSpefType(), EnableIfAttr::EnableIfAttr(), EnclosingExpr::EnclosingExpr(), EnumLiteral::EnumLiteral(), ExpandedSpecialSubstitution::ExpandedSpecialSubstitution(), ExplicitObjectParameter::ExplicitObjectParameter(), ExprRequirement::ExprRequirement(), FloatLiteralImpl< float >::FloatLiteralImpl(), FoldExpr::FoldExpr(), ForwardTemplateReference::ForwardTemplateReference(), FunctionEncoding::FunctionEncoding(), FunctionParam::FunctionParam(), FunctionType::FunctionType(), TemplateParamQualifiedArg::getArg(), FunctionEncoding::getAttrs(), VectorType::getBaseType(), ParameterPackExpansion::getChild(), QualType::getChild(), VectorType::getDimension(), FunctionEncoding::getName(), PointerType::getPointee(), FunctionEncoding::getRequires(), FunctionEncoding::getReturnType(), ForwardTemplateReference::getSyntaxNode(), getSyntaxNode(), ParameterPack::getSyntaxNode(), VendorExtQualType::getTA(), VendorExtQualType::getTy(), GlobalQualifiedName::GlobalQualifiedName(), InitListExpr::InitListExpr(), IntegerLiteral::IntegerLiteral(), LambdaExpr::LambdaExpr(), LiteralOperator::LiteralOperator(), LocalName::LocalName(), MemberExpr::MemberExpr(), MemberLikeFriendName::MemberLikeFriendName(), ModuleEntity::ModuleEntity(), ModuleName::ModuleName(), NameType::NameType(), NameWithTemplateArgs::NameWithTemplateArgs(), NestedName::NestedName(), NestedRequirement::NestedRequirement(), NewExpr::NewExpr(), Node(), NodeArrayNode::NodeArrayNode(), NoexceptSpec::NoexceptSpec(), NonTypeTemplateParamDecl::NonTypeTemplateParamDecl(), ObjCProtoName::ObjCProtoName(), ParameterPack::ParameterPack(), ParameterPackExpansion::ParameterPackExpansion(), PixelVectorType::PixelVectorType(), PointerToMemberConversionExpr::PointerToMemberConversionExpr(), PointerToMemberType::PointerToMemberType(), PointerType::PointerType(), PostfixExpr::PostfixExpr(), PostfixQualifiedType::PostfixQualifiedType(), PrefixExpr::PrefixExpr(), RequiresExpr::printLeft(), QualifiedName::QualifiedName(), QualType::QualType(), ReferenceType::ReferenceType(), RequiresExpr::RequiresExpr(), SizeofParamPackExpr::SizeofParamPackExpr(), SpecialName::SpecialName(), StringLiteral::StringLiteral(), StructuredBindingName::StructuredBindingName(), SubobjectExpr::SubobjectExpr(), SyntheticTemplateParamName::SyntheticTemplateParamName(), TemplateArgs::TemplateArgs(), TemplateArgumentPack::TemplateArgumentPack(), TemplateParamPackDecl::TemplateParamPackDecl(), TemplateParamQualifiedArg::TemplateParamQualifiedArg(), TemplateTemplateParamDecl::TemplateTemplateParamDecl(), ThrowExpr::ThrowExpr(), TransformedType::TransformedType(), TypeRequirement::TypeRequirement(), TypeTemplateParamDecl::TypeTemplateParamDecl(), UnnamedTypeName::UnnamedTypeName(), VectorType::VectorType(), and VendorExtQualType::VendorExtQualType().
|
inline |
Definition at line 226 of file ItaniumDemangle.h.
|
virtualdefault |
DEMANGLE_DUMP_METHOD void Node::dump | ( | ) | const |
References DEMANGLE_DUMP_METHOD.
Referenced by llvm::DAGTypeLegalizer::run(), and llvm::RISCVDAGToDAGISel::Select().
|
inline |
Definition at line 262 of file ItaniumDemangle.h.
References ArrayCache.
Referenced by AbiTagAttr::AbiTagAttr(), and QualType::QualType().
|
inlinevirtual |
Reimplemented in AbiTagAttr, ExpandedSpecialSubstitution, GlobalQualifiedName, MemberLikeFriendName, ModuleEntity, NameType, NameWithTemplateArgs, NestedName, QualifiedName, and SpecialSubstitution.
Definition at line 299 of file ItaniumDemangle.h.
|
inline |
Definition at line 263 of file ItaniumDemangle.h.
References FunctionCache.
Referenced by AbiTagAttr::AbiTagAttr(), and QualType::QualType().
|
inline |
Definition at line 258 of file ItaniumDemangle.h.
Referenced by AbstractManglingParser< Derived, Alloc >::parseCtorDtorName(), AbstractManglingParser< Derived, Alloc >::parseNestedName(), AbstractManglingParser< Derived, Alloc >::parseTemplateArgs(), AbstractManglingParser< Derived, Alloc >::parseTemplateParam(), AbstractManglingParser< Derived, Alloc >::parseUnscopedName(), NodeArray::printAsString(), and llvm::msgpack::Document::writeToBlob().
|
inline |
Definition at line 260 of file ItaniumDemangle.h.
Referenced by ArraySubscriptExpr::match(), BinaryExpr::match(), CallExpr::match(), CastExpr::match(), ConditionalExpr::match(), ConversionExpr::match(), DeleteExpr::match(), EnclosingExpr::match(), MemberExpr::match(), NewExpr::match(), PointerToMemberConversionExpr::match(), PostfixExpr::match(), PrefixExpr::match(), printAsOperand(), ArraySubscriptExpr::printLeft(), BinaryExpr::printLeft(), ConditionalExpr::printLeft(), MemberExpr::printLeft(), PostfixExpr::printLeft(), and PrefixExpr::printLeft().
|
inline |
Definition at line 261 of file ItaniumDemangle.h.
References RHSComponentCache.
Referenced by AbiTagAttr::AbiTagAttr(), PointerToMemberType::PointerToMemberType(), PointerType::PointerType(), QualType::QualType(), and ReferenceType::ReferenceType().
|
inlinevirtual |
Reimplemented in ForwardTemplateReference, and ParameterPack.
Definition at line 271 of file ItaniumDemangle.h.
References Node(), and OutputBuffer.
|
inline |
Definition at line 246 of file ItaniumDemangle.h.
References ArrayCache, hasArraySlow(), OutputBuffer, Unknown, and Yes.
|
inlinevirtual |
Reimplemented in ArrayType, ForwardTemplateReference, ParameterPack, and QualType.
Definition at line 266 of file ItaniumDemangle.h.
References OutputBuffer.
Referenced by hasArray().
|
inline |
Definition at line 252 of file ItaniumDemangle.h.
References FunctionCache, hasFunctionSlow(), OutputBuffer, Unknown, and Yes.
|
inlinevirtual |
Reimplemented in ForwardTemplateReference, FunctionEncoding, FunctionType, ParameterPack, and QualType.
Definition at line 267 of file ItaniumDemangle.h.
References OutputBuffer.
Referenced by hasFunction().
|
inline |
Definition at line 240 of file ItaniumDemangle.h.
References hasRHSComponentSlow(), OutputBuffer, RHSComponentCache, Unknown, and Yes.
|
inlinevirtual |
Reimplemented in ArrayType, ForwardTemplateReference, FunctionEncoding, FunctionType, ParameterPack, PointerToMemberType, PointerType, QualType, and ReferenceType.
Definition at line 265 of file ItaniumDemangle.h.
References OutputBuffer.
Referenced by hasRHSComponent().
|
inline |
Definition at line 286 of file ItaniumDemangle.h.
References No, OutputBuffer, and RHSComponentCache.
Referenced by llvm::ItaniumPartialDemangler::getFunctionDeclContextName(), llvm::DOTGraphTraits< AADepGraph * >::getNodeLabel(), llvm::DOTGraphTraits< const MachineFunction * >::getNodeLabel(), llvm::itaniumDemangle(), printAsOperand(), FoldExpr::printLeft(), and printNode().
|
inline |
Definition at line 275 of file ItaniumDemangle.h.
References Default, getPrecedence(), OutputBuffer, P, and print().
Referenced by llvm::DOTGraphTraits< DOTFuncInfo * >::getBBName(), getSimpleNodeName(), llvm::operator<<(), and llvm::SimpleNodeLabelString().
|
inlinevirtual |
Reimplemented in ArrayType.
Definition at line 295 of file ItaniumDemangle.h.
References OutputBuffer.
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 2637 of file ItaniumDemangle.h.
References DEMANGLE_ASSERT, and F.
|
friend |
Definition at line 309 of file ItaniumDemangle.h.
References OutputBuffer.
Referenced by ForwardTemplateReference::getSyntaxNode(), getSyntaxNode(), ParameterPack::getSyntaxNode(), hasArray(), ArrayType::hasArraySlow(), ForwardTemplateReference::hasArraySlow(), hasArraySlow(), ParameterPack::hasArraySlow(), QualType::hasArraySlow(), hasFunction(), ForwardTemplateReference::hasFunctionSlow(), FunctionEncoding::hasFunctionSlow(), FunctionType::hasFunctionSlow(), hasFunctionSlow(), ParameterPack::hasFunctionSlow(), QualType::hasFunctionSlow(), hasRHSComponent(), ArrayType::hasRHSComponentSlow(), ForwardTemplateReference::hasRHSComponentSlow(), FunctionEncoding::hasRHSComponentSlow(), FunctionType::hasRHSComponentSlow(), hasRHSComponentSlow(), ParameterPack::hasRHSComponentSlow(), PointerToMemberType::hasRHSComponentSlow(), PointerType::hasRHSComponentSlow(), QualType::hasRHSComponentSlow(), ReferenceType::hasRHSComponentSlow(), OutputBuffer, print(), printAsOperand(), ClosureTypeName::printDeclarator(), ArrayType::printInitListAsType(), printInitListAsType(), AbiTagAttr::printLeft(), ArraySubscriptExpr::printLeft(), ArrayType::printLeft(), BinaryExpr::printLeft(), BinaryFPType::printLeft(), BitIntType::printLeft(), BoolExpr::printLeft(), BracedExpr::printLeft(), BracedRangeExpr::printLeft(), CallExpr::printLeft(), CastExpr::printLeft(), ClosureTypeName::printLeft(), ConditionalExpr::printLeft(), ConstrainedTypeTemplateParamDecl::printLeft(), ConversionExpr::printLeft(), ConversionOperatorType::printLeft(), CtorDtorName::printLeft(), CtorVtableSpecialName::printLeft(), DeleteExpr::printLeft(), DotSuffix::printLeft(), DtorName::printLeft(), DynamicExceptionSpec::printLeft(), ElaboratedTypeSpefType::printLeft(), EnableIfAttr::printLeft(), EnclosingExpr::printLeft(), EnumLiteral::printLeft(), ExplicitObjectParameter::printLeft(), ExprRequirement::printLeft(), FloatLiteralImpl< float >::printLeft(), FoldExpr::printLeft(), ForwardTemplateReference::printLeft(), FunctionEncoding::printLeft(), FunctionParam::printLeft(), FunctionType::printLeft(), GlobalQualifiedName::printLeft(), InitListExpr::printLeft(), IntegerLiteral::printLeft(), LambdaExpr::printLeft(), LiteralOperator::printLeft(), LocalName::printLeft(), MemberExpr::printLeft(), MemberLikeFriendName::printLeft(), ModuleEntity::printLeft(), ModuleName::printLeft(), NameType::printLeft(), NameWithTemplateArgs::printLeft(), NestedName::printLeft(), NestedRequirement::printLeft(), NewExpr::printLeft(), NodeArrayNode::printLeft(), NoexceptSpec::printLeft(), NonTypeTemplateParamDecl::printLeft(), ObjCProtoName::printLeft(), ParameterPack::printLeft(), ParameterPackExpansion::printLeft(), PixelVectorType::printLeft(), PointerToMemberConversionExpr::printLeft(), PointerToMemberType::printLeft(), PointerType::printLeft(), PostfixExpr::printLeft(), PostfixQualifiedType::printLeft(), PrefixExpr::printLeft(), QualifiedName::printLeft(), QualType::printLeft(), ReferenceType::printLeft(), RequiresExpr::printLeft(), SizeofParamPackExpr::printLeft(), SpecialName::printLeft(), SpecialSubstitution::printLeft(), StringLiteral::printLeft(), StructuredBindingName::printLeft(), SubobjectExpr::printLeft(), SyntheticTemplateParamName::printLeft(), TemplateArgs::printLeft(), TemplateArgumentPack::printLeft(), TemplateParamPackDecl::printLeft(), TemplateParamQualifiedArg::printLeft(), TemplateTemplateParamDecl::printLeft(), ThrowExpr::printLeft(), TransformedType::printLeft(), TypeRequirement::printLeft(), TypeTemplateParamDecl::printLeft(), UnnamedTypeName::printLeft(), VectorType::printLeft(), VendorExtQualType::printLeft(), QualType::printQuals(), ArrayType::printRight(), ConstrainedTypeTemplateParamDecl::printRight(), ForwardTemplateReference::printRight(), FunctionEncoding::printRight(), FunctionType::printRight(), NonTypeTemplateParamDecl::printRight(), ParameterPack::printRight(), PointerToMemberType::printRight(), PointerType::printRight(), QualType::printRight(), ReferenceType::printRight(), TemplateParamPackDecl::printRight(), TemplateTemplateParamDecl::printRight(), and TypeTemplateParamDecl::printRight().
|
protected |
Track if this node is a (possibly qualified) array type.
This can affect how we format the output string.
Definition at line 214 of file ItaniumDemangle.h.
Referenced by getArrayCache(), hasArray(), Node(), and ParameterPack::ParameterPack().
|
protected |
Track if this node is a (possibly qualified) function type.
This can affect how we format the output string.
Definition at line 218 of file ItaniumDemangle.h.
Referenced by getFunctionCache(), hasFunction(), Node(), and ParameterPack::ParameterPack().
|
protected |
Tracks if this node has a component on its right side, in which case we need to call printRight.
Definition at line 210 of file ItaniumDemangle.h.
Referenced by getRHSComponentCache(), hasRHSComponent(), Node(), ParameterPack::ParameterPack(), and print().