#include "/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/CodeGen/CGVTables.h"
Definition at line 32 of file CGVTables.h.
◆ CodeGenVTables() ◆ createVTableInitializer() ◆ EmitThunks() ◆ EmitVTTDefinition() void CodeGenVTables::EmitVTTDefinition ( llvm::GlobalVariable * VTT, llvm::GlobalVariable::LinkageTypes Linkage, const CXXRecordDecl * RD )EmitVTTDefinition - Emit the definition of the given vtable.
Definition at line 41 of file CGVTT.cpp.
References clang::VTableLayout::AddressPointLocation::AddressPointIndex, clang::PointerAuthOptions::CXXVTTVTablePointers, clang::VTableLayout::getAddressPoint(), GetAddrOfVTTVTable(), clang::VTTVTable::getBase(), clang::CodeGen::CodeGenModule::getCodeGenOpts(), clang::CodeGen::CodeGenModule::getConstantSignedPointer(), clang::CodeGen::CodeGenModule::getContext(), clang::CodeGen::CodeGenModule::getDataLayout(), getItaniumVTableContext(), clang::CodeGen::CodeGenModule::getModule(), clang::ItaniumVTableContext::getVTableLayout(), clang::CodeGen::CodeGenTypeCache::GlobalsInt8PtrTy, clang::Init, clang::CodeGen::CodeGenTypeCache::Int32Ty, clang::CodeGenOptions::PointerAuth, clang::CodeGen::CodeGenModule::setGVProperties(), clang::CodeGen::CodeGenModule::supportsCOMDAT(), and clang::VTableLayout::AddressPointLocation::VTableIndex.
◆ GenerateClassData() void CodeGenVTables::GenerateClassData ( const CXXRecordDecl * RD ) ◆ GenerateConstructionVTable() llvm::GlobalVariable * CodeGenVTables::GenerateConstructionVTable ( const CXXRecordDecl * RD, const BaseSubobject & Base, bool BaseIsVirtual, llvm::GlobalVariable::LinkageTypes Linkage, VTableAddressPointsMapTy & AddressPoints )GenerateConstructionVTable - Generate a construction vtable for the given base subobject.
Definition at line 918 of file CGVTables.cpp.
References clang::CodeGen::ConstantInitBuilderTemplateBase< Traits >::beginStruct(), clang::CodeGen::CodeGenModule::CreateOrReplaceCXXRuntimeVariable(), createVTableInitializer(), clang::CodeGen::CodeGenModule::EmitVTableTypeMetadata(), GenerateRelativeVTableAlias(), clang::CodeGen::CodeGenModule::GetAddrOfRTTIDescriptor(), clang::CodeGen::CodeGenModule::getContext(), clang::CodeGen::CodeGenModule::getCXXABI(), clang::CodeGen::CodeGenModule::getDataLayout(), getItaniumVTableContext(), clang::CodeGen::CGCXXABI::getMangleContext(), clang::CodeGen::CodeGenModule::getModule(), clang::CodeGen::CodeGenModule::getModuleDebugInfo(), clang::ASTContext::getTagDeclType(), getVTableType(), clang::ItaniumVTableContext::isRelativeLayout(), RemoveHwasanMetadata(), and clang::CodeGen::CodeGenModule::setGVProperties().
Referenced by GetAddrOfVTTVTable().
◆ GenerateRelativeVTableAlias() void CodeGenVTables::GenerateRelativeVTableAlias ( llvm::GlobalVariable * VTable, llvm::StringRef AliasNameRef ) ◆ GetAddrOfVTT() llvm::GlobalVariable * CodeGenVTables::GetAddrOfVTT ( const CXXRecordDecl * RD ) ◆ getItaniumVTableContext() [1/2] ◆ getItaniumVTableContext() [2/2] ◆ getMicrosoftVTableContext() ◆ getSecondaryVirtualPointerIndex() ◆ getSubVTTIndex() ◆ getVTableType() llvm::Type * CodeGenVTables::getVTableType ( const VTableLayout & layout ) ◆ isVTableExternal()At this point in the translation unit, does it appear that can we rely on the vtable being defined elsewhere in the program?
The response is really only definitive when called at the end of the translation unit.
The only semantic restriction here is that the object file should not contain a vtable definition when that vtable is defined strongly elsewhere. Otherwise, we'd just like to avoid emitting vtables when unnecessary.
Definition at line 1210 of file CGVTables.cpp.
References clang::CodeGen::CodeGenModule::getContext(), clang::ASTContext::getCurrentKeyFunction(), clang::TargetInfo::getCXXABI(), clang::CodeGen::CodeGenModule::getTarget(), clang::CXXRecordDecl::getTemplateSpecializationKind(), clang::FunctionDecl::hasBody(), clang::CXXRecordDecl::isDynamicClass(), clang::Decl::isInNamedModule(), clang::TargetCXXABI::isMicrosoft(), clang::Decl::shouldEmitInExternalSource(), clang::TSK_ExplicitInstantiationDeclaration, clang::TSK_ExplicitInstantiationDefinition, and clang::TSK_ImplicitInstantiation.
Referenced by setVTableSelectiveDLLImportExport(), shouldEmitVTableAtEndOfTranslationUnit(), and ShouldUseExternalRTTIDescriptor().
◆ RemoveHwasanMetadata() void CodeGenVTables::RemoveHwasanMetadata ( llvm::GlobalValue * GV ) constThe documentation for this class was generated from the following files:
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4