| clang 22.0.0git
    | 
#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>Go to the source code of this file.
| Macros | |
| #define | DUMP_OVERRIDERS 0 | 
| Functions | |
| static VTableLayout::AddressPointsIndexMapTy | MakeAddressPointIndices (const VTableLayout::AddressPointsMapTy &addressPoints, unsigned numVTables) | 
| 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) | 
| static bool | vfptrIsEarlierInMDC (const ASTRecordLayout &Layout, const MethodVFTableLocation &LHS, const MethodVFTableLocation &RHS) | 
| #define DUMP_OVERRIDERS 0 | 
Definition at line 29 of file VTableBuilder.cpp.
| 
 | static | 
Definition at line 3664 of file VTableBuilder.cpp.
References findPathsToSubobject(), removeRedundantPaths(), selectBestPath(), and clang::CharUnits::Zero().
| 
 | static | 
Definition at line 2414 of file VTableBuilder.cpp.
Referenced by clang::ItaniumVTableContext::createConstructionVTableLayout().
| 
 | static | 
Definition at line 3208 of file VTableBuilder.cpp.
References clang::QualType::getCanonicalType(), clang::FunctionDecl::getReturnType(), clang::ReturnAdjustment::isEmpty(), clang::ThisAdjustment::VirtualAdjustment::isEmpty(), clang::ThunkInfo::Method, clang::ReturnAdjustment::VirtualAdjustment::Microsoft, clang::ReturnAdjustment::NonVirtual, clang::ThunkInfo::Return, clang::T, clang::ThunkInfo::This, clang::ReturnAdjustment::VirtualAdjustment::VBIndex, clang::ReturnAdjustment::VirtualAdjustment::VBPtrOffset, clang::ReturnAdjustment::Virtual, and clang::ThisAdjustment::Virtual.
Definition at line 3471 of file VTableBuilder.cpp.
References clang::VPtrInfo::MangledPath, and clang::VPtrInfo::NextBaseToMangle.
Referenced by rebucketPaths().
| 
 | static | 
Definition at line 3521 of file VTableBuilder.cpp.
References clang::CXXRecordDecl::bases(), findPathsToSubobject(), clang::ASTRecordLayout::getBaseClassOffset(), and clang::ASTRecordLayout::getVBaseClassOffset().
Referenced by computeFullPathsForVFTables(), and findPathsToSubobject().
| 
 | static | 
Definition at line 3562 of file VTableBuilder.cpp.
References clang::CXXRecordDecl::bases_begin(), clang::CXXRecordDecl::bases_end(), clang::CharUnits::fromQuantity(), clang::ASTRecordLayout::getBaseClassOffset(), clang::ASTRecordLayout::getVBaseClassOffset(), clang::CXXBaseSpecifier::isVirtual(), and clang::CharUnits::Zero().
Referenced by selectBestPath().
| 
 | static | 
Definition at line 3001 of file VTableBuilder.cpp.
References clang::DeclContext::decls(), clang::CXXMethodDecl::getCanonicalDecl(), and clang::VTableContextBase::hasVtableSlot().
| 
 | static | 
Definition at line 3033 of file VTableBuilder.cpp.
References clang::CXXRecordDecl::bases().
| 
 | static | 
Definition at line 2283 of file VTableBuilder.cpp.
Referenced by clang::VTableLayout::VTableLayout().
| 
 | static | 
Definition at line 3200 of file VTableBuilder.cpp.
| 
 | static | 
Definition at line 3480 of file VTableBuilder.cpp.
References extendPath(), and clang::VPtrInfo::MangledPath.
| 
 | static | 
Definition at line 3547 of file VTableBuilder.cpp.
Referenced by computeFullPathsForVFTables().
| 
 | static | 
Definition at line 3594 of file VTableBuilder.cpp.
References clang::BaseSubobject::getBase(), clang::CXXMethodDecl::getCanonicalDecl(), clang::Decl::getLocation(), getOffsetOfFullPath(), clang::CXXMethodDecl::getParent(), clang::VTableContextBase::hasVtableSlot(), clang::VPtrInfo::IntroducingObject, clang::CXXRecordDecl::methods(), clang::DiagnosticsEngine::Report(), and clang::CharUnits::Zero().
Referenced by computeFullPathsForVFTables().
| 
 | static | 
Definition at line 3362 of file VTableBuilder.cpp.
| 
 | static | 
Definition at line 3686 of file VTableBuilder.cpp.
References clang::ASTRecordLayout::getVBaseClassOffset(), clang::MethodVFTableLocation::VBase, and clang::MethodVFTableLocation::VFPtrOffset.