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

Methods

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()

Declared at: clang/include/clang/AST/Mangle.h:52

clang::ASTContext& getASTContext() const

Declared at: clang/include/clang/AST/Mangle.h:76

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)

Declared at: clang/include/clang/AST/Mangle.h:96

Parameters

const clang::NamedDecl* D

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

Declared at: clang/include/clang/AST/Mangle.h:78

clang::MangleContext::ManglerKind getKind() const

Declared at: clang/include/clang/AST/Mangle.h:66

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

Declared at: clang/include/clang/AST/Mangle.h:68

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)

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&)

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&)

Declared at: clang/include/clang/AST/Mangle.h:122

Parameters

clang::GlobalDecl GD
llvm::raw_ostream&

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

Declared at: clang/include/clang/AST/Mangle.h:132

Parameters

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

clang::QualType T
llvm::raw_ostream&

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)

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&)

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&)

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)

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&)

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&)

Declared at: clang/include/clang/AST/Mangle.h:121

Parameters

clang::GlobalDecl GD
llvm::raw_ostream&

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&)

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&)

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)

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)

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&)

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&)

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&)

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&)

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

clang::QualType T
llvm::raw_ostream&

virtual void needsUniqueInternalLinkageNames()

Declared at: clang/include/clang/AST/Mangle.h:118

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)

Description

@ {

Declared at: clang/include/clang/AST/Mangle.h:110

Parameters

const clang::NamedDecl* D

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

Declared at: clang/include/clang/AST/Mangle.h:112

Parameters

const clang::StringLiteral* SL

virtual void startNewFunction()

Declared at: clang/include/clang/AST/Mangle.h:80

virtual ~MangleContext()

Declared at: clang/include/clang/AST/Mangle.h:74