clang 22.0.0git
|
#include "CIRGenCXXABI.h"
#include "CIRGenFunction.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/ExprCXX.h"
#include "clang/CIR/MissingFeatures.h"
Go to the source code of this file.
Functions | |
static MemberCallInfo | commonBuildCXXMemberOrOperatorCall (CIRGenFunction &cgf, const CXXMethodDecl *md, mlir::Value thisPtr, mlir::Value implicitParam, QualType implicitParamTy, const CallExpr *ce, CallArgList &args, CallArgList *rtlArgs) |
static mlir::Value | emitCXXNewAllocSize (CIRGenFunction &cgf, const CXXNewExpr *e, unsigned minElements, mlir::Value &numElements, mlir::Value &sizeWithoutCookie) |
static void | storeAnyExprIntoOneUnit (CIRGenFunction &cgf, const Expr *init, QualType allocType, Address newPtr, AggValueSlot::Overlap_t mayOverlap) |
static void | emitNewInitializer (CIRGenFunction &cgf, const CXXNewExpr *e, QualType elementType, mlir::Type elementTy, Address newPtr, mlir::Value numElements, mlir::Value allocSizeWithoutCookie) |
static RValue | emitNewDeleteCall (CIRGenFunction &cgf, const FunctionDecl *calleeDecl, const FunctionProtoType *calleeType, const CallArgList &args) |
Emit a call to an operator new or operator delete function, as implicitly created by new-expressions and delete-expressions. | |
|
static |
Definition at line 31 of file CIRGenCXXExpr.cpp.
References clang::CIRGen::CallArgList::add(), clang::CIRGen::CallArgList::addFrom(), clang::CallExpr::arguments(), clang::Type::castAs(), clang::CIRGen::CIRGenFunction::cgm, clang::CIRGen::CIRGenTypes::deriveThisType(), clang::CIRGen::CIRGenFunction::emitCallArgs(), clang::CIRGen::RValue::get(), clang::CIRGen::CIRGenModule::getCXXABI(), clang::CallExpr::getDirectCallee(), clang::CIRGen::RequiredArgs::getFromProtoWithExtraSlots(), clang::CIRGen::CIRGenCXXABI::getThisArgumentTypeForMethod(), clang::ValueDecl::getType(), clang::CIRGen::CIRGenFunction::getTypes(), and clang::CXXMethodDecl::isInstance().
Referenced by clang::CIRGen::CIRGenFunction::emitCXXDestructorCall(), and clang::CIRGen::CIRGenFunction::emitCXXMemberOrOperatorCall().
|
static |
Definition at line 213 of file CIRGenCXXExpr.cpp.
References clang::CIRGen::CIRGenFunction::cgm, clang::CIRGen::CIRGenModule::errorNYI(), clang::CXXNewExpr::getAllocatedType(), clang::CIRGen::CIRGenFunction::getBuilder(), cir::CIRBaseBuilderTy::getConstant(), clang::CIRGen::CIRGenFunction::getContext(), clang::CIRGen::CIRGenFunction::getLoc(), clang::CharUnits::getQuantity(), clang::CXXNewExpr::getSourceRange(), clang::ASTContext::getTypeSizeInChars(), clang::CXXNewExpr::isArray(), clang::CIRGen::CIRGenTypeCache::SizeTy, and clang::ast_matchers::type.
Referenced by clang::CIRGen::CIRGenFunction::emitCXXNewExpr().
|
static |
Emit a call to an operator new or operator delete function, as implicitly created by new-expressions and delete-expressions.
C++1y [expr.new]p10: [In a new-expression,] an implementation is allowed to omit a call to a replaceable global allocation function.
We model such elidable calls with the 'builtin' attribute.
Definition at line 295 of file CIRGenCXXExpr.cpp.
References clang::CIRGen::CIRGenTypes::arrangeFreeFunctionCall(), cir::MissingFeatures::attributeBuiltin(), clang::CIRGen::CIRGenFunction::cgm, clang::CIRGen::CIRGenFunction::emitCall(), clang::CIRGen::CIRGenCallee::forDirect(), clang::CIRGen::CIRGenModule::getAddrOfFunction(), and clang::CIRGen::CIRGenModule::getTypes().
Referenced by clang::CIRGen::CIRGenFunction::emitCXXNewExpr().
|
static |
Definition at line 257 of file CIRGenCXXExpr.cpp.
References clang::CIRGen::CIRGenFunction::cgm, clang::CIRGen::AggValueSlot::DoesNotOverlap, clang::CIRGen::CIRGenModule::errorNYI(), cir::MissingFeatures::generateDebugInfo(), clang::CXXNewExpr::getAllocatedType(), clang::CXXNewExpr::getInitializer(), clang::CXXNewExpr::getSourceRange(), clang::CXXNewExpr::isArray(), and storeAnyExprIntoOneUnit().
Referenced by clang::CIRGen::CIRGenFunction::emitCXXNewExpr().
|
static |
Definition at line 231 of file CIRGenCXXExpr.cpp.
References cir::MissingFeatures::aggValueSlotGC(), clang::CIRGen::CIRGenFunction::cgm, clang::CIRGen::CIRGenFunction::emitAggExpr(), clang::CIRGen::CIRGenFunction::emitScalarInit(), clang::CIRGen::CIRGenModule::errorNYI(), clang::CIRGen::AggValueSlot::forAddr(), clang::CIRGen::CIRGenFunction::getEvaluationKind(), clang::CIRGen::CIRGenFunction::getLoc(), clang::QualType::getQualifiers(), clang::Stmt::getSourceRange(), clang::CIRGen::AggValueSlot::IsDestructed, clang::CIRGen::AggValueSlot::IsNotAliased, clang::CIRGen::AggValueSlot::IsNotZeroed, clang::CIRGen::CIRGenFunction::makeAddrLValue(), cir::MissingFeatures::sanitizers(), cir::TEK_Aggregate, cir::TEK_Complex, and cir::TEK_Scalar.
Referenced by emitNewInitializer().