#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/SmallPtrSet.h"
#include "llvm/Support/Format.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <cstdio>
Go to the source code of this file.
|
static std::unique_ptr< VTableLayout > | CreateVTableLayout (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) |
|
◆ DUMP_OVERRIDERS
#define DUMP_OVERRIDERS 0 |
◆ computeFullPathsForVFTables()
◆ CreateVTableLayout()
static std::unique_ptr<VTableLayout> CreateVTableLayout |
( |
const ItaniumVTableBuilder & |
Builder | ) |
|
|
static |
◆ dumpMicrosoftThunkAdjustment()
static void dumpMicrosoftThunkAdjustment |
( |
const ThunkInfo & |
TI, |
|
|
raw_ostream & |
Out, |
|
|
bool |
ContinueFirstLine |
|
) |
| |
|
static |
Definition at line 3063 of file VTableBuilder.cpp.
References clang::QualType::getAsString(), clang::QualType::getCanonicalType(), clang::FunctionDecl::getReturnType(), clang::ReturnAdjustment::isEmpty(), clang::ThisAdjustment::VirtualAdjustment::isEmpty(), clang::ThisAdjustment::isEmpty(), clang::ThunkInfo::Method, clang::ReturnAdjustment::VirtualAdjustment::Microsoft, clang::ThisAdjustment::VirtualAdjustment::Microsoft, clang::ReturnAdjustment::NonVirtual, clang::ThisAdjustment::NonVirtual, PrintBasePath(), clang::ThunkInfo::Return, clang::T, clang::ThunkInfo::This, clang::ReturnAdjustment::VirtualAdjustment::VBIndex, clang::ThisAdjustment::VirtualAdjustment::VBOffsetOffset, clang::ReturnAdjustment::VirtualAdjustment::VBPtrOffset, clang::ThisAdjustment::VirtualAdjustment::VBPtrOffset, clang::ReturnAdjustment::Virtual, clang::ThisAdjustment::Virtual, and clang::ThisAdjustment::VirtualAdjustment::VtordispOffset.
◆ extendPath()
◆ findPathsToSubobject()
◆ getOffsetOfFullPath()
◆ GroupNewVirtualOverloads()
◆ isDirectVBase()
◆ PrintBasePath()
◆ rebucketPaths()
◆ removeRedundantPaths()
static void removeRedundantPaths |
( |
std::list< FullPathTy > & |
FullPaths | ) |
|
|
static |
◆ selectBestPath()
◆ setsIntersect()