A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://clang.llvm.org/doxygen/classclang_1_1CodeGen_1_1CodeGenVTables.html below:

clang: clang::CodeGen::CodeGenVTables Class Reference

#include "/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/CodeGen/CGVTables.h"

void  createVTableInitializer (ConstantStructBuilder &builder, const VTableLayout &layout, llvm::Constant *rtti, bool vtableHasLocalLinkage)   Add vtable components for the given vtable layout to the given global initializer.
    CodeGenVTables (CodeGenModule &CGM)   ItaniumVTableContextgetItaniumVTableContext ()   const ItaniumVTableContextgetItaniumVTableContext () const   MicrosoftVTableContextgetMicrosoftVTableContext ()   uint64_t  getSubVTTIndex (const CXXRecordDecl *RD, BaseSubobject Base)   getSubVTTIndex - Return the index of the sub-VTT for the base class of the given record decl.
  uint64_t  getSecondaryVirtualPointerIndex (const CXXRecordDecl *RD, BaseSubobject Base)   getSecondaryVirtualPointerIndex - Return the index in the VTT where the virtual pointer for the given subobject is located.
  llvm::GlobalVariable *  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.
  llvm::GlobalVariable *  GetAddrOfVTT (const CXXRecordDecl *RD)   GetAddrOfVTT - Get the address of the VTT for the given record decl.
  void  EmitVTTDefinition (llvm::GlobalVariable *VTT, llvm::GlobalVariable::LinkageTypes Linkage, const CXXRecordDecl *RD)   EmitVTTDefinition - Emit the definition of the given vtable.
  void  EmitThunks (GlobalDecl GD)   EmitThunks - Emit the associated thunks for the given global decl.
  void  GenerateClassData (const CXXRecordDecl *RD)   GenerateClassData - Generate all the class data required to be generated upon definition of a KeyFunction.
  bool  isVTableExternal (const CXXRecordDecl *RD)   At this point in the translation unit, does it appear that can we rely on the vtable being defined elsewhere in the program?
  llvm::Type *  getVTableType (const VTableLayout &layout)   Returns the type of a vtable with the given layout.
  void  GenerateRelativeVTableAlias (llvm::GlobalVariable *VTable, llvm::StringRef AliasNameRef)   Generate a public facing alias for the vtable and make the vtable either hidden or private.
  void  RemoveHwasanMetadata (llvm::GlobalValue *GV) const   Specify a global should not be instrumented with hwasan.
 

Definition at line 32 of file CGVTables.h.

◆ CodeGenVTables() ◆ createVTableInitializer() ◆ EmitThunks() ◆ EmitVTTDefinition() void CodeGenVTables::EmitVTTDefinition ( llvm::GlobalVariable *  VTT, llvm::GlobalVariable::LinkageTypes  Linkage, const CXXRecordDeclRD  )

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 CXXRecordDeclRD ) ◆ GenerateConstructionVTable() llvm::GlobalVariable * CodeGenVTables::GenerateConstructionVTable ( const CXXRecordDeclRD, const BaseSubobjectBase, 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 CXXRecordDeclRD ) ◆ getItaniumVTableContext() [1/2] ◆ getItaniumVTableContext() [2/2] ◆ getMicrosoftVTableContext() ◆ getSecondaryVirtualPointerIndex() ◆ getSubVTTIndex() ◆ getVTableType() llvm::Type * CodeGenVTables::getVTableType ( const VTableLayoutlayout ) ◆ 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 ) const

The 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