clang 22.0.0git
CIRGenClass.cpp File Reference

Go to the source code of this file.

Functions

static void emitLValueForAnyFieldInitialization (CIRGenFunction &cgf, CXXCtorInitializer *memberInit, LValue &lhs)
static void emitMemberInitializer (CIRGenFunction &cgf, const CXXRecordDecl *classDecl, CXXCtorInitializer *memberInit, const CXXConstructorDecl *constructor, FunctionArgList &args)
static bool isInitializerOfDynamicClass (const CXXCtorInitializer *baseInit)
static bool baseInitializerUsesThis (ASTContext &c, const Expr *init)
static Address applyNonVirtualAndVirtualOffset (mlir::Location loc, CIRGenFunction &cgf, Address addr, CharUnits nonVirtualOffset, mlir::Value virtualOffset, const CXXRecordDecl *derivedClass, const CXXRecordDecl *nearestVBase, mlir::Type baseValueTy={}, bool assumeNotNull=true)

Function Documentation

◆ applyNonVirtualAndVirtualOffset()

Address applyNonVirtualAndVirtualOffset ( mlir::Location loc,
CIRGenFunction & cgf,
Address addr,
CharUnits nonVirtualOffset,
mlir::Value virtualOffset,
const CXXRecordDecl * derivedClass,
const CXXRecordDecl * nearestVBase,
mlir::Type baseValueTy = {},
bool assumeNotNull = true )
static

◆ baseInitializerUsesThis()

bool baseInitializerUsesThis ( ASTContext & c,
const Expr * init )
static

Definition at line 189 of file CIRGenClass.cpp.

References c.

Referenced by clang::CIRGen::CIRGenFunction::emitBaseInitializer().

◆ emitLValueForAnyFieldInitialization()

◆ emitMemberInitializer()

void emitMemberInitializer ( CIRGenFunction & cgf,
const CXXRecordDecl * classDecl,
CXXCtorInitializer * memberInit,
const CXXConstructorDecl * constructor,
FunctionArgList & args )
static

Definition at line 75 of file CIRGenClass.cpp.

References clang::CIRGen::CIRGenFunction::cgm, clang::CIRGen::CIRGenBuilderTy::createLoad(), clang::Ctor_Base, clang::CIRGen::CIRGenFunction::curGD, clang::CIRGen::CIRGenFunction::emitAggregateCopy(), clang::CIRGen::CIRGenFunction::emitInitializerForField(), emitLValueForAnyFieldInitialization(), clang::CIRGen::CIRGenFunction::emitLValueForFieldInitialization(), cir::MissingFeatures::generateDebugInfo(), clang::CIRGen::CIRGenFunction::getAddrOfLocalVar(), clang::CXXCtorInitializer::getAnyMember(), clang::ASTContext::getAsConstantArrayType(), clang::ASTContext::getBaseElementType(), clang::CIRGen::CIRGenFunction::getBuilder(), clang::ASTContext::getCanonicalTagType(), clang::CIRGen::CIRGenFunction::getContext(), clang::GlobalDecl::getCtorType(), clang::CIRGen::CIRGenModule::getCXXABI(), clang::CXXCtorInitializer::getInit(), clang::CIRGen::CIRGenFunction::getLoc(), clang::NamedDecl::getName(), clang::CIRGen::CIRGenFunction::getOverlapForFieldInit(), clang::CXXCtorInitializer::getSourceLocation(), clang::CIRGen::CIRGenCXXABI::getSrcArgforCopyCtor(), clang::ValueDecl::getType(), clang::CXXCtorInitializer::isAnyMemberInitializer(), clang::CXXConstructorDecl::isCopyOrMoveConstructor(), clang::FunctionDecl::isDefaulted(), clang::QualType::isDestructedType(), clang::Type::isRecordType(), clang::CIRGen::CIRGenFunction::loadCXXThis(), clang::CIRGen::CIRGenFunction::makeNaturalAlignAddrLValue(), clang::CIRGen::CIRGenFunction::makeNaturalAlignPointeeAddrLValue(), and clang::CIRGen::CIRGenFunction::needsEHCleanup().

Referenced by clang::CIRGen::CIRGenFunction::emitCtorPrologue().

◆ isInitializerOfDynamicClass()