clang  16.0.0git
Macros | Functions
VTableBuilder.cpp File Reference
#include "clang/AST/VTableBuilder.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/ASTDiagnostic.h"
#include "clang/AST/CXXInheritance.h"
#include "clang/AST/RecordLayout.h"
#include "clang/Basic/TargetInfo.h"
#include "llvm/ADT/SetOperations.h"
#include "llvm/ADT/SetVector.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.




static VTableLayout::AddressPointsIndexMapTy MakeAddressPointIndices (const VTableLayout::AddressPointsMapTy &addressPoints, unsigned numVTables)
static std::unique_ptr< VTableLayoutCreateVTableLayout (const ItaniumVTableBuilder &Builder)
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 void findPathsToSubobject (ASTContext &Context, const ASTRecordLayout &MostDerivedLayout, const CXXRecordDecl *RD, CharUnits Offset, BaseSubobject IntroducingObject, FullPathTy &FullPath, std::list< FullPathTy > &Paths)
static void removeRedundantPaths (std::list< FullPathTy > &FullPaths)
static CharUnits getOffsetOfFullPath (ASTContext &Context, const CXXRecordDecl *RD, const FullPathTy &FullPath)
static const FullPathTy * selectBestPath (ASTContext &Context, const CXXRecordDecl *RD, const VPtrInfo &Info, std::list< FullPathTy > &FullPaths)
static void computeFullPathsForVFTables (ASTContext &Context, const CXXRecordDecl *RD, VPtrInfoVector &Paths)
static bool vfptrIsEarlierInMDC (const ASTRecordLayout &Layout, const MethodVFTableLocation &LHS, const MethodVFTableLocation &RHS)

Macro Definition Documentation



Definition at line 29 of file VTableBuilder.cpp.

Function Documentation

◆ computeFullPathsForVFTables()

static void computeFullPathsForVFTables ( ASTContext Context,
const CXXRecordDecl RD,
VPtrInfoVector Paths 

Definition at line 3565 of file VTableBuilder.cpp.

◆ CreateVTableLayout()

static std::unique_ptr<VTableLayout> CreateVTableLayout ( const ItaniumVTableBuilder &  Builder)

Definition at line 2315 of file VTableBuilder.cpp.

◆ dumpMicrosoftThunkAdjustment()

static void dumpMicrosoftThunkAdjustment ( const ThunkInfo TI,
raw_ostream &  Out,
bool  ContinueFirstLine 

Definition at line 3109 of file VTableBuilder.cpp.

◆ extendPath()

static bool extendPath ( VPtrInfo P)

Definition at line 3372 of file VTableBuilder.cpp.

References P.

◆ findPathsToSubobject()

static void findPathsToSubobject ( ASTContext Context,
const ASTRecordLayout MostDerivedLayout,
const CXXRecordDecl RD,
CharUnits  Offset,
BaseSubobject  IntroducingObject,
FullPathTy &  FullPath,
std::list< FullPathTy > &  Paths 

Definition at line 3422 of file VTableBuilder.cpp.

◆ getOffsetOfFullPath()

static CharUnits getOffsetOfFullPath ( ASTContext Context,
const CXXRecordDecl RD,
const FullPathTy &  FullPath 

◆ GroupNewVirtualOverloads()

static void GroupNewVirtualOverloads ( const CXXRecordDecl RD,
SmallVector< const CXXMethodDecl *, 10 > &  VirtualMethods 

◆ isDirectVBase()

static bool isDirectVBase ( const CXXRecordDecl Base,
const CXXRecordDecl RD 

Definition at line 2934 of file VTableBuilder.cpp.

References clang::CXXRecordDecl::bases().

◆ MakeAddressPointIndices()

static VTableLayout::AddressPointsIndexMapTy MakeAddressPointIndices ( const VTableLayout::AddressPointsMapTy addressPoints,
unsigned  numVTables 

Definition at line 2213 of file VTableBuilder.cpp.

◆ PrintBasePath()

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

Definition at line 3101 of file VTableBuilder.cpp.

◆ rebucketPaths()

static bool rebucketPaths ( VPtrInfoVector Paths)

Definition at line 3381 of file VTableBuilder.cpp.

◆ removeRedundantPaths()

static void removeRedundantPaths ( std::list< FullPathTy > &  FullPaths)

Definition at line 3448 of file VTableBuilder.cpp.

◆ selectBestPath()

static const FullPathTy* selectBestPath ( ASTContext Context,
const CXXRecordDecl RD,
const VPtrInfo Info,
std::list< FullPathTy > &  FullPaths 

◆ setsIntersect()

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

Definition at line 3263 of file VTableBuilder.cpp.

◆ vfptrIsEarlierInMDC()

static bool vfptrIsEarlierInMDC ( const ASTRecordLayout Layout,
const MethodVFTableLocation LHS,
const MethodVFTableLocation RHS