clang 22.0.0git
|
#include "ABIInfoImpl.h"
#include "CGBlocks.h"
#include "CGCXXABI.h"
#include "CGDebugInfo.h"
#include "CGRecordLayout.h"
#include "CodeGenFunction.h"
#include "TargetInfo.h"
#include "clang/AST/Attr.h"
#include "clang/AST/CXXInheritance.h"
#include "clang/AST/CharUnits.h"
#include "clang/AST/DeclTemplate.h"
#include "clang/AST/EvaluatedExprVisitor.h"
#include "clang/AST/RecordLayout.h"
#include "clang/AST/StmtCXX.h"
#include "clang/Basic/CodeGenOptions.h"
#include "clang/CodeGen/CGFunctionInfo.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/Metadata.h"
#include "llvm/Support/SaveAndRestore.h"
#include "llvm/Transforms/Utils/SanitizerStats.h"
#include <optional>
Go to the source code of this file.
|
static |
Definition at line 242 of file CGClass.cpp.
References clang::CharUnits::alignmentAtOffset(), clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CGBuilderTy::CreateInBoundsGEP(), clang::CodeGen::Address::emitRawPointer(), clang::CodeGen::Address::getAlignment(), clang::CodeGen::CodeGenModule::getItaniumVTableContext(), clang::CharUnits::getQuantity(), clang::CodeGen::CodeGenModule::getTarget(), clang::CodeGen::CodeGenModule::getVBaseAlignment(), clang::CodeGen::CodeGenTypeCache::Int32Ty, clang::CodeGen::CodeGenTypeCache::Int8Ty, clang::ItaniumVTableContext::isRelativeLayout(), clang::CharUnits::isZero(), and clang::CodeGen::CodeGenTypeCache::PtrDiffTy.
Referenced by clang::CodeGen::CodeGenFunction::EmitVTableAssumptionLoad(), clang::CodeGen::CodeGenFunction::GetAddressOfBaseClass(), and clang::CodeGen::CodeGenFunction::InitializeVTablePointer().
|
static |
Definition at line 542 of file CGClass.cpp.
References clang::C, and clang::Init.
Referenced by EmitBaseInitializer().
|
static |
Definition at line 2184 of file CGClass.cpp.
References clang::TargetCXXABI::areArgsDestroyedLeftToRightInCallee(), clang::CodeGen::CodeGenTypes::arrangeCXXConstructorCall(), clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CodeGenFunction::getContext(), clang::TargetInfo::getCXXABI(), clang::CodeGen::CodeGenFunction::getTarget(), clang::CodeGen::CodeGenModule::getTypes(), clang::FunctionDecl::isVariadic(), clang::FunctionDecl::parameters(), and clang::CodeGen::CGFunctionInfo::usesInAlloca().
Referenced by clang::CodeGen::CodeGenFunction::EmitCXXConstructorCall().
|
static |
CanSkipVTablePointerInitialization - Check whether we need to initialize any vtable pointers before calling this destructor.
Definition at line 1423 of file CGClass.cpp.
References FieldHasTrivialDestructorBody(), clang::RecordDecl::fields(), clang::CodeGen::CodeGenFunction::getContext(), clang::CXXMethodDecl::getParent(), clang::FunctionDecl::hasTrivialBody(), clang::CXXRecordDecl::isDynamicClass(), and clang::CXXRecordDecl::isEffectivelyFinal().
Referenced by clang::CodeGen::CodeGenFunction::EmitDestructorBody().
|
static |
Definition at line 548 of file CGClass.cpp.
References BaseInitializerUsesThis(), clang::Type::castAsCXXRecordDecl(), clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::AggValueSlot::DoesNotNeedGCBarriers, clang::CodeGen::EHCleanup, clang::CodeGen::CodeGenFunction::EHStack, clang::CodeGen::CodeGenFunction::EmitAggExpr(), clang::CodeGen::AggValueSlot::forAddr(), clang::CodeGen::CodeGenFunction::GetAddressOfDirectBaseInCompleteClass(), clang::CXXCtorInitializer::getBaseClass(), clang::CodeGen::CodeGenFunction::getContext(), clang::CXXCtorInitializer::getInit(), clang::CodeGen::CodeGenModule::getLangOpts(), clang::CodeGen::CodeGenFunction::getOverlapForBaseInit(), clang::CodeGen::CodeGenFunction::InitializeVTablePointers(), clang::CXXCtorInitializer::isBaseInitializer(), clang::CXXCtorInitializer::isBaseVirtual(), clang::CodeGen::AggValueSlot::IsDestructed, clang::CodeGen::AggValueSlot::IsNotAliased, clang::CodeGen::CodeGenFunction::LoadCXXThisAddress(), and V.
Referenced by clang::CodeGen::CodeGenFunction::EmitCtorPrologue().
|
static |
Definition at line 605 of file CGClass.cpp.
References clang::cast(), clang::IndirectFieldDecl::chain(), clang::CodeGen::CodeGenFunction::EmitLValueForFieldInitialization(), clang::CXXCtorInitializer::getAnyMember(), clang::CXXCtorInitializer::getIndirectMember(), and clang::CXXCtorInitializer::isIndirectMemberInitializer().
Referenced by EmitMemberInitializer().
|
static |
Definition at line 619 of file CGClass.cpp.
References clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::CGM, clang::Constructor, clang::CodeGen::CGBuilderTy::CreateLoad(), clang::Ctor_Base, clang::CodeGen::CodeGenFunction::CurGD, clang::CodeGen::CodeGenFunction::EmitAggregateCopy(), clang::CodeGen::CodeGenFunction::EmitInitializerForField(), EmitLValueForAnyFieldInitialization(), clang::CodeGen::CodeGenFunction::EmitLValueForFieldInitialization(), clang::CodeGen::CodeGenFunction::GetAddrOfLocalVar(), clang::CXXCtorInitializer::getAnyMember(), clang::ASTContext::getAsConstantArrayType(), clang::ASTContext::getBaseElementType(), clang::ASTContext::getCanonicalTagType(), clang::CXXConstructExpr::getConstructor(), clang::CodeGen::CodeGenFunction::getContext(), clang::GlobalDecl::getCtorType(), clang::CodeGen::CodeGenModule::getCXXABI(), clang::CodeGen::CodeGenFunction::getDebugInfo(), clang::CXXCtorInitializer::getInit(), clang::CodeGen::CodeGenFunction::getOverlapForFieldInit(), clang::CXXCtorInitializer::getSourceLocation(), clang::CodeGen::CGCXXABI::getSrcArgforCopyCtor(), clang::CXXCtorInitializer::isAnyMemberInitializer(), clang::QualType::isDestructedType(), isMemcpyEquivalentSpecialMember(), clang::QualType::isPODType(), clang::CodeGen::CodeGenFunction::LoadCXXThis(), clang::CodeGen::CodeGenFunction::MakeNaturalAlignAddrLValue(), clang::CodeGen::CodeGenFunction::MakeNaturalAlignPointeeAddrLValue(), clang::CodeGen::CodeGenFunction::needsEHCleanup(), and clang::CodeGen::CodeGenFunction::pushEHDestroy().
|
static |
Definition at line 1405 of file CGClass.cpp.
References clang::Type::getAsCXXRecordDecl(), and HasTrivialDestructorBody().
Referenced by CanSkipVTablePointerInitialization(), and HasTrivialDestructorBody().
|
static |
Definition at line 1364 of file CGClass.cpp.
References clang::CXXRecordDecl::bases(), FieldHasTrivialDestructorBody(), clang::RecordDecl::fields(), clang::CXXRecordDecl::getDestructor(), clang::FunctionDecl::hasTrivialBody(), clang::CXXRecordDecl::hasTrivialDestructor(), HasTrivialDestructorBody(), clang::NonVirtualBase, clang::CXXRecordDecl::vbases(), and clang::VirtualBase.
Referenced by FieldHasTrivialDestructorBody(), and HasTrivialDestructorBody().
|
static |
Definition at line 1259 of file CGClass.cpp.
References clang::Type::castAsCXXRecordDecl(), clang::CXXCtorInitializer::getBaseClass(), and clang::CXXRecordDecl::isDynamicClass().
|
static |
Definition at line 588 of file CGClass.cpp.
References clang::CXXMethodDecl::getParent(), clang::CXXMethodDecl::isCopyAssignmentOperator(), clang::FunctionDecl::isDefaulted(), clang::CXXMethodDecl::isMoveAssignmentOperator(), clang::FunctionDecl::isTrivial(), clang::TagDecl::isUnion(), and clang::RecordDecl::mayInsertExtraPadding().
Referenced by clang::CodeGen::CodeGenFunction::EmitCXXConstructorCall(), clang::CodeGen::CodeGenFunction::EmitCXXConstructorCall(), and EmitMemberInitializer().
|
static |
Definition at line 2744 of file CGClass.cpp.
References clang::CXXRecordDecl::bases_begin(), clang::RecordDecl::field_empty(), clang::Type::getAsCXXRecordDecl(), clang::CXXRecordDecl::getNumBases(), clang::CXXRecordDecl::getNumVBases(), clang::CXXBaseSpecifier::getType(), clang::isa(), clang::Decl::isImplicit(), clang::CXXMethodDecl::isVirtual(), LeastDerivedClassWithSameLayout(), and clang::CXXRecordDecl::methods().
Referenced by clang::CodeGen::CodeGenFunction::EmitVTablePtrCheckForCall(), clang::CodeGen::CodeGenFunction::EmitVTablePtrCheckForCast(), and LeastDerivedClassWithSameLayout().
|
static |
Converts the CFITypeCheckKind into SanitizerKind::SanitizerOrdinal and llvm::SanitizerStatKind.
Definition at line 2799 of file CGClass.cpp.
References clang::CodeGen::CodeGenFunction::CFITCK_DerivedCast, clang::CodeGen::CodeGenFunction::CFITCK_ICall, clang::CodeGen::CodeGenFunction::CFITCK_NVCall, clang::CodeGen::CodeGenFunction::CFITCK_NVMFCall, clang::CodeGen::CodeGenFunction::CFITCK_UnrelatedCast, clang::CodeGen::CodeGenFunction::CFITCK_VCall, and clang::CodeGen::CodeGenFunction::CFITCK_VMFCall.
Referenced by clang::CodeGen::CodeGenFunction::EmitVTablePtrCheck(), clang::CodeGen::CodeGenFunction::EmitVTablePtrCheckForCall(), and clang::CodeGen::CodeGenFunction::EmitVTablePtrCheckForCast().