clang: clang::MangleContext Class Reference (original) (raw)

MangleContext - Context for tracking state which persists across multiple calls to the C++ name mangler. More...

#include "[clang/AST/Mangle.h](Mangle%5F8h%5Fsource.html)"

Public Member Functions
ManglerKind getKind () const
bool isAux () const
MangleContext (ASTContext &Context, DiagnosticsEngine &Diags, ManglerKind Kind, bool IsAux=false)
virtual ~MangleContext ()
ASTContext & getASTContext () const
DiagnosticsEngine & getDiags () const
virtual void startNewFunction ()
unsigned getBlockId (const BlockDecl *BD, bool Local)
uint64_t getAnonymousStructId (const NamedDecl *D, const FunctionDecl *FD=nullptr)
uint64_t getAnonymousStructIdForDebugInfo (const NamedDecl *D)
virtual std::string getLambdaString (const CXXRecordDecl *Lambda)=0
Mangler Entry Points
bool shouldMangleDeclName (const NamedDecl *D)
virtual bool shouldMangleCXXName (const NamedDecl *D)=0
virtual bool shouldMangleStringLiteral (const StringLiteral *SL)=0
virtual bool isUniqueInternalLinkageDecl (const NamedDecl *ND)
virtual void needsUniqueInternalLinkageNames ()
void mangleName (GlobalDecl GD, raw_ostream &)
virtual void mangleCXXName (GlobalDecl GD, raw_ostream &)=0
virtual void mangleThunk (const CXXMethodDecl *MD, const ThunkInfo &Thunk, bool ElideOverrideInfo, raw_ostream &)=0
virtual void mangleCXXDtorThunk (const CXXDestructorDecl *DD, CXXDtorType Type, const ThunkInfo &Thunk, bool ElideOverrideInfo, raw_ostream &)=0
virtual void mangleReferenceTemporary (const VarDecl *D, unsigned ManglingNumber, raw_ostream &)=0
virtual void mangleCXXVTable (const CXXRecordDecl *RD, raw_ostream &)=0
virtual void mangleCXXRTTI (QualType T, raw_ostream &)=0
virtual void mangleCXXRTTIName (QualType T, raw_ostream &, bool NormalizeIntegers=false)=0
virtual void mangleStringLiteral (const StringLiteral *SL, raw_ostream &)=0
virtual void mangleMSGuidDecl (const MSGuidDecl *GD, raw_ostream &)
void mangleGlobalBlock (const BlockDecl *BD, const NamedDecl *ID, raw_ostream &Out)
void mangleCtorBlock (const CXXConstructorDecl *CD, CXXCtorType CT, const BlockDecl *BD, raw_ostream &Out)
void mangleDtorBlock (const CXXDestructorDecl *CD, CXXDtorType DT, const BlockDecl *BD, raw_ostream &Out)
void mangleBlock (const DeclContext *DC, const BlockDecl *BD, raw_ostream &Out)
void mangleObjCMethodName (const ObjCMethodDecl *MD, raw_ostream &OS, bool includePrefixByte=true, bool includeCategoryNamespace=true)
void mangleObjCMethodNameAsSourceName (const ObjCMethodDecl *MD, raw_ostream &)
virtual void mangleStaticGuardVariable (const VarDecl *D, raw_ostream &)=0
virtual void mangleDynamicInitializer (const VarDecl *D, raw_ostream &)=0
virtual void mangleDynamicAtExitDestructor (const VarDecl *D, raw_ostream &)=0
virtual void mangleSEHFilterExpression (GlobalDecl EnclosingDecl, raw_ostream &Out)=0
virtual void mangleSEHFinallyBlock (GlobalDecl EnclosingDecl, raw_ostream &Out)=0
virtual void mangleCanonicalTypeName (QualType T, raw_ostream &, bool NormalizeIntegers=false)=0
Generates a unique string for an externally visible type for use with TBAA or type uniquing.

MangleContext - Context for tracking state which persists across multiple calls to the C++ name mangler.

Definition at line 45 of file Mangle.h.

ManglerKind

Enumerator
MK_Itanium
MK_Microsoft

Definition at line 47 of file Mangle.h.

~MangleContext()

virtual clang::MangleContext::~MangleContext ( ) inlinevirtual

getAnonymousStructId()

uint64_t clang::MangleContext::getAnonymousStructId ( const NamedDecl * D, const FunctionDecl * FD = nullptr ) inline

getAnonymousStructIdForDebugInfo()

uint64_t clang::MangleContext::getAnonymousStructIdForDebugInfo ( const NamedDecl * D) inline

getASTContext()

ASTContext & clang::MangleContext::getASTContext ( ) const inline

getBlockId()

getDiags()

getKind()

ManglerKind clang::MangleContext::getKind ( ) const inline

getLambdaString()

virtual std::string clang::MangleContext::getLambdaString ( const CXXRecordDecl * Lambda) pure virtual

isAux()

bool clang::MangleContext::isAux ( ) const inline

isUniqueInternalLinkageDecl()

virtual bool clang::MangleContext::isUniqueInternalLinkageDecl ( const NamedDecl * ND) inlinevirtual

mangleBlock()

mangleCanonicalTypeName()

virtual void clang::MangleContext::mangleCanonicalTypeName ( QualType T, raw_ostream & , bool NormalizeIntegers = false ) pure virtual

mangleCtorBlock()

mangleCXXDtorThunk()

mangleCXXName()

virtual void clang::MangleContext::mangleCXXName ( GlobalDecl GD, raw_ostream & ) pure virtual

mangleCXXRTTI()

virtual void clang::MangleContext::mangleCXXRTTI ( QualType T, raw_ostream & ) pure virtual

mangleCXXRTTIName()

virtual void clang::MangleContext::mangleCXXRTTIName ( QualType T, raw_ostream & , bool NormalizeIntegers = false ) pure virtual

mangleCXXVTable()

virtual void clang::MangleContext::mangleCXXVTable ( const CXXRecordDecl * RD, raw_ostream & ) pure virtual

mangleDtorBlock()

mangleDynamicAtExitDestructor()

virtual void clang::MangleContext::mangleDynamicAtExitDestructor ( const VarDecl * D, raw_ostream & ) pure virtual

mangleDynamicInitializer()

virtual void clang::MangleContext::mangleDynamicInitializer ( const VarDecl * D, raw_ostream & ) pure virtual

mangleGlobalBlock()

void MangleContext::mangleGlobalBlock ( const BlockDecl * BD,
const NamedDecl * ID,
raw_ostream & Out
)

mangleMSGuidDecl()

void MangleContext::mangleMSGuidDecl ( const MSGuidDecl * GD, raw_ostream & Out ) virtual

mangleName()

void MangleContext::mangleName ( GlobalDecl GD,
raw_ostream & Out
)

Definition at line 138 of file Mangle.cpp.

References clang::Type::castAs(), CCM_Fast, CCM_Other, CCM_RegCall, CCM_Std, CCM_Vector, CCM_WasmMainArgcArgv, D, clang::Default, getASTContext(), clang::Decl::getAttr(), getCallingConvMangling(), clang::TargetInfo::getCXXABI(), clang::GlobalDecl::getDecl(), clang::TargetInfo::getPointerWidth(), clang::ASTContext::getTargetInfo(), clang::ValueDecl::getType(), clang::ASTContext::getTypeSize(), clang::TargetInfo::getUserLabelPrefix(), mangleCXXName(), mangleMSGuidDecl(), mangleObjCMethodNameAsSourceName(), and shouldMangleCXXName().

Referenced by getMangledNameImpl(), mangleBlock(), mangleCtorBlock(), mangleDtorBlock(), and mangleGlobalBlock().

mangleObjCMethodName()

void MangleContext::mangleObjCMethodName ( const ObjCMethodDecl * MD,
raw_ostream & OS,
bool includePrefixByte = true,
bool includeCategoryNamespace = true
)

Definition at line 327 of file Mangle.cpp.

References getASTContext(), clang::ObjCMethodDecl::getCategory(), clang::ObjCMethodDecl::getClassInterface(), clang::Decl::getDeclContext(), clang::NamedDecl::getName(), clang::ObjCMethodDecl::getSelector(), clang::ObjCMethodDecl::isClassMethod(), clang::ObjCRuntime::isGNUFamily(), clang::ObjCMethodDecl::isInstanceMethod(), and clang::Selector::print().

Referenced by clang::CodeGen::CGObjCRuntime::getSymbolNameForMethod(), and mangleObjCMethodNameAsSourceName().

mangleObjCMethodNameAsSourceName()

void MangleContext::mangleObjCMethodNameAsSourceName ( const ObjCMethodDecl * MD,
raw_ostream & Out
)

mangleReferenceTemporary()

virtual void clang::MangleContext::mangleReferenceTemporary ( const VarDecl * D, unsigned ManglingNumber, raw_ostream & ) pure virtual

mangleSEHFilterExpression()

virtual void clang::MangleContext::mangleSEHFilterExpression ( GlobalDecl EnclosingDecl, raw_ostream & Out ) pure virtual

mangleSEHFinallyBlock()

virtual void clang::MangleContext::mangleSEHFinallyBlock ( GlobalDecl EnclosingDecl, raw_ostream & Out ) pure virtual

mangleStaticGuardVariable()

virtual void clang::MangleContext::mangleStaticGuardVariable ( const VarDecl * D, raw_ostream & ) pure virtual

mangleStringLiteral()

virtual void clang::MangleContext::mangleStringLiteral ( const StringLiteral * SL, raw_ostream & ) pure virtual

mangleThunk()

virtual void clang::MangleContext::mangleThunk ( const CXXMethodDecl * MD, const ThunkInfo & Thunk, bool ElideOverrideInfo, raw_ostream & ) pure virtual

needsUniqueInternalLinkageNames()

virtual void clang::MangleContext::needsUniqueInternalLinkageNames ( ) inlinevirtual

shouldMangleCXXName()

virtual bool clang::MangleContext::shouldMangleCXXName ( const NamedDecl * D) pure virtual

shouldMangleDeclName()

Definition at line 104 of file Mangle.cpp.

References CCM_Other, clang::CPlusPlus, D, getASTContext(), getCallingConvMangling(), clang::Decl::getOwningModuleForLinkage(), clang::Decl::hasAttr(), clang::Decl::hasAttrs(), isUniqueInternalLinkageDecl(), and shouldMangleCXXName().

Referenced by getMangledNameImpl(), mangleBlock(), and mangleGlobalBlock().

shouldMangleStringLiteral()

virtual bool clang::MangleContext::shouldMangleStringLiteral ( const StringLiteral * SL) pure virtual

startNewFunction()

virtual void clang::MangleContext::startNewFunction ( ) inlinevirtual

The documentation for this class was generated from the following files: