clang
3.7.0
|
#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.
Macros | |
#define | DUMP_OVERRIDERS 0 |
Functions | |
static VTableLayout * | CreateVTableLayout (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 void | findPathsToSubobject (ASTContext &Context, const ASTRecordLayout &MostDerivedLayout, const CXXRecordDecl *RD, CharUnits Offset, BaseSubobject BaseWithVPtr, 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, VPtrInfo *Info, std::list< FullPathTy > &FullPaths) |
static void | computeFullPathsForVFTables (ASTContext &Context, const CXXRecordDecl *RD, VPtrInfoVector &Paths) |
#define DUMP_OVERRIDERS 0 |
Definition at line 29 of file VTableBuilder.cpp.
|
static |
Definition at line 2652 of file VTableBuilder.cpp.
References clang::Type::getAsCXXRecordDecl(), and clang::CXXBaseSpecifier::getType().
|
static |
Definition at line 3601 of file VTableBuilder.cpp.
References findPathsToSubobject(), clang::ASTContext::getASTRecordLayout(), removeRedundantPaths(), selectBestPath(), and clang::CharUnits::Zero().
|
static |
Definition at line 2322 of file VTableBuilder.cpp.
Referenced by clang::ItaniumVTableContext::createConstructionVTableLayout().
|
static |
Definition at line 3133 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, clang::ThunkInfo::Return, 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.
Definition at line 3402 of file VTableBuilder.cpp.
References clang::VPtrInfo::MangledPath, and clang::VPtrInfo::NextBaseToMangle.
Referenced by rebucketPaths().
|
static |
Definition at line 3457 of file VTableBuilder.cpp.
References clang::CXXRecordDecl::bases(), clang::ASTContext::getASTRecordLayout(), clang::ASTRecordLayout::getBaseClassOffset(), and clang::ASTRecordLayout::getVBaseClassOffset().
Referenced by computeFullPathsForVFTables().
|
static |
Definition at line 3499 of file VTableBuilder.cpp.
References clang::CXXRecordDecl::bases_begin(), clang::CXXRecordDecl::bases_end(), clang::CharUnits::fromQuantity(), clang::Type::getAsCXXRecordDecl(), clang::ASTContext::getASTRecordLayout(), clang::CharUnits::getQuantity(), clang::CXXBaseSpecifier::getType(), clang::ASTRecordLayout::getVBaseClassOffset(), clang::CXXBaseSpecifier::isVirtual(), and clang::CharUnits::Zero().
Referenced by selectBestPath().
|
static |
Definition at line 2929 of file VTableBuilder.cpp.
References clang::CXXMethodDecl::getCanonicalDecl(), clang::NamedDecl::getDeclName(), clang::CXXMethodDecl::isVirtual(), and clang::CXXRecordDecl::methods().
|
static |
Definition at line 2957 of file VTableBuilder.cpp.
References clang::CXXRecordDecl::bases().
|
static |
Definition at line 3124 of file VTableBuilder.cpp.
|
static |
Definition at line 3411 of file VTableBuilder.cpp.
References extendPath(), and clang::VPtrInfo::MangledPath.
|
static |
Definition at line 3483 of file VTableBuilder.cpp.
Referenced by computeFullPathsForVFTables().
|
static |
Definition at line 3531 of file VTableBuilder.cpp.
References clang::VPtrInfo::BaseWithVPtr, clang::CXXMethodDecl::getCanonicalDecl(), clang::ASTContext::getDiagnostics(), clang::Decl::getLocation(), getOffsetOfFullPath(), clang::CXXMethodDecl::getParent(), clang::CXXMethodDecl::isVirtual(), clang::CXXRecordDecl::methods(), clang::DiagnosticsEngine::Report(), and clang::CharUnits::Zero().
Referenced by computeFullPathsForVFTables().
|
static |
Definition at line 3292 of file VTableBuilder.cpp.