class MangleContext
Declaration
class MangleContext { /* full declaration omitted */ };
Description
MangleContext - Context for tracking state which persists across multiple calls to the C++ name mangler.
Declared at: clang/include/clang/AST/Mangle.h:44
Member Variables
- private clang::ASTContext& Context
- private clang::DiagnosticsEngine& Diags
- private const clang::MangleContext::ManglerKind Kind
- private bool IsAux = false
- For aux target. If true, uses mangling number for aux target from ASTContext.
- private llvm::DenseMap<const BlockDecl*, unsigned int> GlobalBlockIds
- private llvm::DenseMap<const BlockDecl*, unsigned int> LocalBlockIds
- private llvm::DenseMap<const NamedDecl*, uint64_t> AnonStructIds
Method Overview
- public MangleContext(clang::ASTContext & Context, clang::DiagnosticsEngine & Diags, clang::MangleContext::ManglerKind Kind, bool IsAux = false)
- private virtual void anchor()
- public clang::ASTContext & getASTContext() const
- public uint64_t getAnonymousStructId(const clang::NamedDecl * D)
- public uint64_t getAnonymousStructIdForDebugInfo(const clang::NamedDecl * D)
- public unsigned int getBlockId(const clang::BlockDecl * BD, bool Local)
- public clang::DiagnosticsEngine & getDiags() const
- public clang::MangleContext::ManglerKind getKind() const
- public virtual std::string getLambdaString(const clang::CXXRecordDecl * Lambda)
- public bool isAux() const
- public virtual bool isUniqueInternalLinkageDecl(const clang::NamedDecl * ND)
- public void mangleBlock(const clang::DeclContext * DC, const clang::BlockDecl * BD, llvm::raw_ostream & Out)
- public virtual void mangleCXXDtorThunk(const clang::CXXDestructorDecl * DD, clang::CXXDtorType Type, const clang::ThisAdjustment & ThisAdjustment, llvm::raw_ostream &)
- public virtual void mangleCXXName(clang::GlobalDecl GD, llvm::raw_ostream &)
- public virtual void mangleCXXRTTI(clang::QualType T, llvm::raw_ostream &)
- public virtual void mangleCXXRTTIName(clang::QualType T, llvm::raw_ostream &)
- public void mangleCtorBlock(const clang::CXXConstructorDecl * CD, clang::CXXCtorType CT, const clang::BlockDecl * BD, llvm::raw_ostream & Out)
- public void mangleDtorBlock(const clang::CXXDestructorDecl * CD, clang::CXXDtorType DT, const clang::BlockDecl * BD, llvm::raw_ostream & Out)
- public virtual void mangleDynamicAtExitDestructor(const clang::VarDecl * D, llvm::raw_ostream &)
- public virtual void mangleDynamicInitializer(const clang::VarDecl * D, llvm::raw_ostream &)
- public void mangleGlobalBlock(const clang::BlockDecl * BD, const clang::NamedDecl * ID, llvm::raw_ostream & Out)
- public virtual void mangleMSGuidDecl(const clang::MSGuidDecl * GD, llvm::raw_ostream &)
- public void mangleName(clang::GlobalDecl GD, llvm::raw_ostream &)
- public void mangleObjCMethodName(const clang::ObjCMethodDecl * MD, llvm::raw_ostream & OS, bool includePrefixByte = true, bool includeCategoryNamespace = true)
- public void mangleObjCMethodNameAsSourceName(const clang::ObjCMethodDecl * MD, llvm::raw_ostream &)
- public virtual void mangleReferenceTemporary(const clang::VarDecl * D, unsigned int ManglingNumber, llvm::raw_ostream &)
- public virtual void mangleSEHFilterExpression(const clang::NamedDecl * EnclosingDecl, llvm::raw_ostream & Out)
- public virtual void mangleSEHFinallyBlock(const clang::NamedDecl * EnclosingDecl, llvm::raw_ostream & Out)
- public virtual void mangleStaticGuardVariable(const clang::VarDecl * D, llvm::raw_ostream &)
- public virtual void mangleStringLiteral(const clang::StringLiteral * SL, llvm::raw_ostream &)
- public virtual void mangleThunk(const clang::CXXMethodDecl * MD, const clang::ThunkInfo & Thunk, llvm::raw_ostream &)
- public virtual void mangleTypeName(clang::QualType T, llvm::raw_ostream &)
- public virtual void needsUniqueInternalLinkageNames()
- public virtual bool shouldMangleCXXName(const clang::NamedDecl * D)
- public bool shouldMangleDeclName(const clang::NamedDecl * D)
- public virtual bool shouldMangleStringLiteral(const clang::StringLiteral * SL)
- public virtual void startNewFunction()
- public virtual ~MangleContext()
Methods
¶MangleContext(
clang::ASTContext& Context,
clang::DiagnosticsEngine& Diags,
clang::MangleContext::ManglerKind Kind,
bool IsAux = false)
MangleContext(
clang::ASTContext& Context,
clang::DiagnosticsEngine& Diags,
clang::MangleContext::ManglerKind Kind,
bool IsAux = false)
Declared at: clang/include/clang/AST/Mangle.h:70
Parameters
- clang::ASTContext& Context
- clang::DiagnosticsEngine& Diags
- clang::MangleContext::ManglerKind Kind
- bool IsAux = false
¶virtual void anchor()
virtual void anchor()
Declared at: clang/include/clang/AST/Mangle.h:52
¶clang::ASTContext& getASTContext() const
clang::ASTContext& getASTContext() const
Declared at: clang/include/clang/AST/Mangle.h:76
¶uint64_t getAnonymousStructId(
const clang::NamedDecl* D)
uint64_t getAnonymousStructId(
const clang::NamedDecl* D)
Declared at: clang/include/clang/AST/Mangle.h:90
Parameters
- const clang::NamedDecl* D
¶uint64_t getAnonymousStructIdForDebugInfo(
const clang::NamedDecl* D)
uint64_t getAnonymousStructIdForDebugInfo(
const clang::NamedDecl* D)
Declared at: clang/include/clang/AST/Mangle.h:96
Parameters
- const clang::NamedDecl* D
¶unsigned int getBlockId(
const clang::BlockDecl* BD,
bool Local)
unsigned int getBlockId(
const clang::BlockDecl* BD,
bool Local)
Declared at: clang/include/clang/AST/Mangle.h:82
Parameters
- const clang::BlockDecl* BD
- bool Local
¶clang::DiagnosticsEngine& getDiags() const
clang::DiagnosticsEngine& getDiags() const
Declared at: clang/include/clang/AST/Mangle.h:78
¶clang::MangleContext::ManglerKind getKind() const
clang::MangleContext::ManglerKind getKind() const
Declared at: clang/include/clang/AST/Mangle.h:66
¶virtual std::string getLambdaString(
const clang::CXXRecordDecl* Lambda)
virtual std::string getLambdaString(
const clang::CXXRecordDecl* Lambda)
Declared at: clang/include/clang/AST/Mangle.h:105
Parameters
- const clang::CXXRecordDecl* Lambda
¶bool isAux() const
bool isAux() const
Declared at: clang/include/clang/AST/Mangle.h:68
¶virtual bool isUniqueInternalLinkageDecl(
const clang::NamedDecl* ND)
virtual bool isUniqueInternalLinkageDecl(
const clang::NamedDecl* ND)
Declared at: clang/include/clang/AST/Mangle.h:114
Parameters
- const clang::NamedDecl* ND
¶void mangleBlock(const clang::DeclContext* DC,
const clang::BlockDecl* BD,
llvm::raw_ostream& Out)
void mangleBlock(const clang::DeclContext* DC,
const clang::BlockDecl* BD,
llvm::raw_ostream& Out)
Declared at: clang/include/clang/AST/Mangle.h:144
Parameters
- const clang::DeclContext* DC
- const clang::BlockDecl* BD
- llvm::raw_ostream& Out
¶virtual void mangleCXXDtorThunk(
const clang::CXXDestructorDecl* DD,
clang::CXXDtorType Type,
const clang::ThisAdjustment& ThisAdjustment,
llvm::raw_ostream&)
virtual void mangleCXXDtorThunk(
const clang::CXXDestructorDecl* DD,
clang::CXXDtorType Type,
const clang::ThisAdjustment& ThisAdjustment,
llvm::raw_ostream&)
Declared at: clang/include/clang/AST/Mangle.h:126
Parameters
- const clang::CXXDestructorDecl* DD
- clang::CXXDtorType Type
- const clang::ThisAdjustment& ThisAdjustment
- llvm::raw_ostream&
¶virtual void mangleCXXName(clang::GlobalDecl GD,
llvm::raw_ostream&)
virtual void mangleCXXName(clang::GlobalDecl GD,
llvm::raw_ostream&)
Declared at: clang/include/clang/AST/Mangle.h:122
Parameters
¶virtual void mangleCXXRTTI(clang::QualType T,
llvm::raw_ostream&)
virtual void mangleCXXRTTI(clang::QualType T,
llvm::raw_ostream&)
Declared at: clang/include/clang/AST/Mangle.h:132
Parameters
¶virtual void mangleCXXRTTIName(clang::QualType T,
llvm::raw_ostream&)
virtual void mangleCXXRTTIName(clang::QualType T,
llvm::raw_ostream&)
Declared at: clang/include/clang/AST/Mangle.h:133
Parameters
¶void mangleCtorBlock(
const clang::CXXConstructorDecl* CD,
clang::CXXCtorType CT,
const clang::BlockDecl* BD,
llvm::raw_ostream& Out)
void mangleCtorBlock(
const clang::CXXConstructorDecl* CD,
clang::CXXCtorType CT,
const clang::BlockDecl* BD,
llvm::raw_ostream& Out)
Declared at: clang/include/clang/AST/Mangle.h:140
Parameters
- const clang::CXXConstructorDecl* CD
- clang::CXXCtorType CT
- const clang::BlockDecl* BD
- llvm::raw_ostream& Out
¶void mangleDtorBlock(
const clang::CXXDestructorDecl* CD,
clang::CXXDtorType DT,
const clang::BlockDecl* BD,
llvm::raw_ostream& Out)
void mangleDtorBlock(
const clang::CXXDestructorDecl* CD,
clang::CXXDtorType DT,
const clang::BlockDecl* BD,
llvm::raw_ostream& Out)
Declared at: clang/include/clang/AST/Mangle.h:142
Parameters
- const clang::CXXDestructorDecl* CD
- clang::CXXDtorType DT
- const clang::BlockDecl* BD
- llvm::raw_ostream& Out
¶virtual void mangleDynamicAtExitDestructor(
const clang::VarDecl* D,
llvm::raw_ostream&)
virtual void mangleDynamicAtExitDestructor(
const clang::VarDecl* D,
llvm::raw_ostream&)
Declared at: clang/include/clang/AST/Mangle.h:157
Parameters
- const clang::VarDecl* D
- llvm::raw_ostream&
¶virtual void mangleDynamicInitializer(
const clang::VarDecl* D,
llvm::raw_ostream&)
virtual void mangleDynamicInitializer(
const clang::VarDecl* D,
llvm::raw_ostream&)
Declared at: clang/include/clang/AST/Mangle.h:155
Parameters
- const clang::VarDecl* D
- llvm::raw_ostream&
¶void mangleGlobalBlock(const clang::BlockDecl* BD,
const clang::NamedDecl* ID,
llvm::raw_ostream& Out)
void mangleGlobalBlock(const clang::BlockDecl* BD,
const clang::NamedDecl* ID,
llvm::raw_ostream& Out)
Declared at: clang/include/clang/AST/Mangle.h:137
Parameters
- const clang::BlockDecl* BD
- const clang::NamedDecl* ID
- llvm::raw_ostream& Out
¶virtual void mangleMSGuidDecl(
const clang::MSGuidDecl* GD,
llvm::raw_ostream&)
virtual void mangleMSGuidDecl(
const clang::MSGuidDecl* GD,
llvm::raw_ostream&)
Declared at: clang/include/clang/AST/Mangle.h:135
Parameters
- const clang::MSGuidDecl* GD
- llvm::raw_ostream&
¶void mangleName(clang::GlobalDecl GD,
llvm::raw_ostream&)
void mangleName(clang::GlobalDecl GD,
llvm::raw_ostream&)
Declared at: clang/include/clang/AST/Mangle.h:121
Parameters
¶void mangleObjCMethodName(
const clang::ObjCMethodDecl* MD,
llvm::raw_ostream& OS,
bool includePrefixByte = true,
bool includeCategoryNamespace = true)
void mangleObjCMethodName(
const clang::ObjCMethodDecl* MD,
llvm::raw_ostream& OS,
bool includePrefixByte = true,
bool includeCategoryNamespace = true)
Declared at: clang/include/clang/AST/Mangle.h:147
Parameters
- const clang::ObjCMethodDecl* MD
- llvm::raw_ostream& OS
- bool includePrefixByte = true
- bool includeCategoryNamespace = true
¶void mangleObjCMethodNameAsSourceName(
const clang::ObjCMethodDecl* MD,
llvm::raw_ostream&)
void mangleObjCMethodNameAsSourceName(
const clang::ObjCMethodDecl* MD,
llvm::raw_ostream&)
Declared at: clang/include/clang/AST/Mangle.h:150
Parameters
- const clang::ObjCMethodDecl* MD
- llvm::raw_ostream&
¶virtual void mangleReferenceTemporary(
const clang::VarDecl* D,
unsigned int ManglingNumber,
llvm::raw_ostream&)
virtual void mangleReferenceTemporary(
const clang::VarDecl* D,
unsigned int ManglingNumber,
llvm::raw_ostream&)
Declared at: clang/include/clang/AST/Mangle.h:129
Parameters
- const clang::VarDecl* D
- unsigned int ManglingNumber
- llvm::raw_ostream&
¶virtual void mangleSEHFilterExpression(
const clang::NamedDecl* EnclosingDecl,
llvm::raw_ostream& Out)
virtual void mangleSEHFilterExpression(
const clang::NamedDecl* EnclosingDecl,
llvm::raw_ostream& Out)
Declared at: clang/include/clang/AST/Mangle.h:160
Parameters
- const clang::NamedDecl* EnclosingDecl
- llvm::raw_ostream& Out
¶virtual void mangleSEHFinallyBlock(
const clang::NamedDecl* EnclosingDecl,
llvm::raw_ostream& Out)
virtual void mangleSEHFinallyBlock(
const clang::NamedDecl* EnclosingDecl,
llvm::raw_ostream& Out)
Declared at: clang/include/clang/AST/Mangle.h:163
Parameters
- const clang::NamedDecl* EnclosingDecl
- llvm::raw_ostream& Out
¶virtual void mangleStaticGuardVariable(
const clang::VarDecl* D,
llvm::raw_ostream&)
virtual void mangleStaticGuardVariable(
const clang::VarDecl* D,
llvm::raw_ostream&)
Declared at: clang/include/clang/AST/Mangle.h:153
Parameters
- const clang::VarDecl* D
- llvm::raw_ostream&
¶virtual void mangleStringLiteral(
const clang::StringLiteral* SL,
llvm::raw_ostream&)
virtual void mangleStringLiteral(
const clang::StringLiteral* SL,
llvm::raw_ostream&)
Declared at: clang/include/clang/AST/Mangle.h:134
Parameters
- const clang::StringLiteral* SL
- llvm::raw_ostream&
¶virtual void mangleThunk(
const clang::CXXMethodDecl* MD,
const clang::ThunkInfo& Thunk,
llvm::raw_ostream&)
virtual void mangleThunk(
const clang::CXXMethodDecl* MD,
const clang::ThunkInfo& Thunk,
llvm::raw_ostream&)
Declared at: clang/include/clang/AST/Mangle.h:123
Parameters
- const clang::CXXMethodDecl* MD
- const clang::ThunkInfo& Thunk
- llvm::raw_ostream&
¶virtual void mangleTypeName(clang::QualType T,
llvm::raw_ostream&)
virtual void mangleTypeName(clang::QualType T,
llvm::raw_ostream&)
Description
Generates a unique string for an externally visible type for use with TBAA or type uniquing. TODO: Extend this to internal types by generating names that are unique across translation units so it can be used with LTO.
Declared at: clang/include/clang/AST/Mangle.h:170
Parameters
¶virtual void needsUniqueInternalLinkageNames()
virtual void needsUniqueInternalLinkageNames()
Declared at: clang/include/clang/AST/Mangle.h:118
¶virtual bool shouldMangleCXXName(
const clang::NamedDecl* D)
virtual bool shouldMangleCXXName(
const clang::NamedDecl* D)
Declared at: clang/include/clang/AST/Mangle.h:111
Parameters
- const clang::NamedDecl* D
¶bool shouldMangleDeclName(
const clang::NamedDecl* D)
bool shouldMangleDeclName(
const clang::NamedDecl* D)
Description
@ {
Declared at: clang/include/clang/AST/Mangle.h:110
Parameters
- const clang::NamedDecl* D
¶virtual bool shouldMangleStringLiteral(
const clang::StringLiteral* SL)
virtual bool shouldMangleStringLiteral(
const clang::StringLiteral* SL)
Declared at: clang/include/clang/AST/Mangle.h:112
Parameters
- const clang::StringLiteral* SL
¶virtual void startNewFunction()
virtual void startNewFunction()
Declared at: clang/include/clang/AST/Mangle.h:80
¶virtual ~MangleContext()
virtual ~MangleContext()
Declared at: clang/include/clang/AST/Mangle.h:74