clang API Documentation

Classes | Defines | Functions
VTableBuilder.cpp File Reference
#include "clang/AST/VTableBuilder.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/CXXInheritance.h"
#include "clang/AST/RecordLayout.h"
#include "clang/Basic/TargetInfo.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/Support/Format.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <cstdio>
Include dependency graph for VTableBuilder.cpp:

Go to the source code of this file.

Classes

struct  InitialOverriddenDefinitionCollector

Defines

#define DUMP_OVERRIDERS   0

Functions

static VTableLayoutCreateVTableLayout (const ItaniumVTableBuilder &Builder)
static bool BaseInSet (const CXXBaseSpecifier *Specifier, CXXBasePath &Path, void *BasesSet)
static void GroupNewVirtualOverloads (const CXXRecordDecl *RD, SmallVector< const CXXMethodDecl *, 10 > &VirtualMethods)
static bool isDirectVBase (const CXXRecordDecl *Base, const CXXRecordDecl *RD)
static void PrintBasePath (const VPtrInfo::BasePath &Path, raw_ostream &Out)
static void dumpMicrosoftThunkAdjustment (const ThunkInfo &TI, raw_ostream &Out, bool ContinueFirstLine)
static bool setsIntersect (const llvm::SmallPtrSet< const CXXRecordDecl *, 4 > &A, ArrayRef< const CXXRecordDecl * > B)
static bool rebucketPaths (VPtrInfoVector &Paths)
static bool extendPath (VPtrInfo *P)
static bool findPathForVPtr (ASTContext &Context, const ASTRecordLayout &MostDerivedLayout, const CXXRecordDecl *RD, CharUnits Offset, llvm::SmallPtrSetImpl< const CXXRecordDecl * > &VBasesSeen, VPtrInfo::BasePath &FullPath, VPtrInfo *Info)
static void computeFullPathsForVFTables (ASTContext &Context, const CXXRecordDecl *RD, VPtrInfoVector &Paths)

Define Documentation

#define DUMP_OVERRIDERS   0

Definition at line 27 of file VTableBuilder.cpp.


Function Documentation

static bool BaseInSet ( const CXXBaseSpecifier Specifier,
CXXBasePath Path,
void *  BasesSet 
) [static]
static void computeFullPathsForVFTables ( ASTContext Context,
const CXXRecordDecl RD,
VPtrInfoVector Paths 
) [static]
static VTableLayout* CreateVTableLayout ( const ItaniumVTableBuilder &  Builder) [static]
static void dumpMicrosoftThunkAdjustment ( const ThunkInfo TI,
raw_ostream &  Out,
bool  ContinueFirstLine 
) [static]
static bool extendPath ( VPtrInfo P) [static]

Definition at line 3389 of file VTableBuilder.cpp.

References clang::VPtrInfo::MangledPath, and clang::VPtrInfo::NextBaseToMangle.

Referenced by rebucketPaths().

static bool findPathForVPtr ( ASTContext Context,
const ASTRecordLayout MostDerivedLayout,
const CXXRecordDecl RD,
CharUnits  Offset,
llvm::SmallPtrSetImpl< const CXXRecordDecl * > &  VBasesSeen,
VPtrInfo::BasePath FullPath,
VPtrInfo Info 
) [static]
static void GroupNewVirtualOverloads ( const CXXRecordDecl RD,
SmallVector< const CXXMethodDecl *, 10 > &  VirtualMethods 
) [static]
static bool isDirectVBase ( const CXXRecordDecl Base,
const CXXRecordDecl RD 
) [static]

Definition at line 2946 of file VTableBuilder.cpp.

References clang::CodeGen::Base, and clang::CXXRecordDecl::bases().

static void PrintBasePath ( const VPtrInfo::BasePath Path,
raw_ostream &  Out 
) [static]

Definition at line 3111 of file VTableBuilder.cpp.

static bool rebucketPaths ( VPtrInfoVector Paths) [static]

Definition at line 3398 of file VTableBuilder.cpp.

References extendPath(), and clang::VPtrInfo::MangledPath.

static bool setsIntersect ( const llvm::SmallPtrSet< const CXXRecordDecl *, 4 > &  A,
ArrayRef< const CXXRecordDecl * >  B 
) [static]

Definition at line 3279 of file VTableBuilder.cpp.