Lines Matching refs:CodeGenFunction
15 #include "CodeGenFunction.h"
35 tryEmitARCRetainScalarExpr(CodeGenFunction &CGF, const Expr *e);
36 static RValue AdjustObjCObjectType(CodeGenFunction &CGF,
48 llvm::Value *CodeGenFunction::EmitObjCStringLiteral(const ObjCStringLiteral *E)
62 CodeGenFunction::EmitObjCBoxedExpr(const ObjCBoxedExpr *E) {
120 llvm::Value *CodeGenFunction::EmitObjCCollectionLiteral(const Expr *E,
243 llvm::Value *CodeGenFunction::EmitObjCArrayLiteral(const ObjCArrayLiteral *E) {
247 llvm::Value *CodeGenFunction::EmitObjCDictionaryLiteral(
253 llvm::Value *CodeGenFunction::EmitObjCSelectorExpr(const ObjCSelectorExpr *E) {
261 llvm::Value *CodeGenFunction::EmitObjCProtocolExpr(const ObjCProtocolExpr *E) {
269 static RValue AdjustObjCObjectType(CodeGenFunction &CGF, QualType ExpT,
374 tryGenerateSpecializedMessageSend(CodeGenFunction &CGF, QualType ResultType,
437 CodeGenFunction &CGF, ReturnValueSlot Return, QualType ResultType,
523 tryEmitSpecializedAllocInit(CodeGenFunction &CGF, const ObjCMessageExpr *OME) {
571 RValue CodeGenFunction::EmitObjCMessageExpr(const ObjCMessageExpr *E,
721 void Emit(CodeGenFunction &CGF, Flags flags) override {
749 /// CodeGenFunction.
750 void CodeGenFunction::StartObjCMethod(const ObjCMethodDecl *OMD,
799 static llvm::Value *emitARCRetainLoadOfScalar(CodeGenFunction &CGF,
804 void CodeGenFunction::GenerateObjCMethod(const ObjCMethodDecl *OMD) {
815 static void emitStructGetterCall(CodeGenFunction &CGF, ObjCIvarDecl *ivar,
1043 void CodeGenFunction::GenerateObjCGetter(ObjCImplementationDecl *IMP,
1046 CodeGenFunction(CGM).GenerateObjCAtomicGetterCopyHelperFunction(PID);
1081 static void emitCPPObjectAtomicGetterCall(CodeGenFunction &CGF,
1111 CodeGenFunction::generateObjCGetterBody(const ObjCImplementationDecl *classImpl,
1289 static void emitStructSetterCall(CodeGenFunction &CGF, ObjCMethodDecl *OMD,
1333 static void emitCPPObjectAtomicSetterCall(CodeGenFunction &CGF,
1400 CodeGenFunction::generateObjCSetterBody(const ObjCImplementationDecl *classImpl,
1575 void CodeGenFunction::GenerateObjCSetter(ObjCImplementationDecl *IMP,
1578 CodeGenFunction(CGM).GenerateObjCAtomicSetterCopyHelperFunction(PID);
1593 CodeGenFunction::Destroyer *destroyer;
1597 CodeGenFunction::Destroyer *destroyer,
1602 void Emit(CodeGenFunction &CGF, Flags flags) override {
1611 /// Like CodeGenFunction::destroyARCStrong, but do it with a call.
1612 static void destroyARCStrongWithStore(CodeGenFunction &CGF,
1619 static void emitCXXDestructMethod(CodeGenFunction &CGF,
1621 CodeGenFunction::RunCleanupsScope scope(CGF);
1634 CodeGenFunction::Destroyer *destroyer = nullptr;
1655 void CodeGenFunction::GenerateObjCCtorDtorMethod(ObjCImplementationDecl *IMP,
1691 llvm::Value *CodeGenFunction::LoadObjCSelf() {
1699 QualType CodeGenFunction::TypeOfSelfObject() {
1707 void CodeGenFunction::EmitObjCForCollectionStmt(const ObjCForCollectionStmt &S){
2031 void CodeGenFunction::EmitObjCAtTryStmt(const ObjCAtTryStmt &S) {
2035 void CodeGenFunction::EmitObjCAtThrowStmt(const ObjCAtThrowStmt &S) {
2039 void CodeGenFunction::EmitObjCAtSynchronizedStmt(
2049 void Emit(CodeGenFunction &CGF, Flags flags) override {
2058 llvm::Value *CodeGenFunction::EmitObjCConsumeObject(QualType type,
2066 llvm::Value *CodeGenFunction::EmitObjCExtendObjectLifetime(QualType type,
2073 void CodeGenFunction::EmitARCIntrinsicUse(ArrayRef<llvm::Value*> values) {
2085 void CodeGenFunction::EmitARCNoopIntrinsicUse(ArrayRef<llvm::Value *> values) {
2113 CodeGenFunction &CGF, llvm::Value *value, llvm::Type *returnType,
2138 static llvm::Value *emitARCLoadOperation(CodeGenFunction &CGF, Address addr,
2162 static llvm::Value *emitARCStoreOperation(CodeGenFunction &CGF, Address addr,
2189 static void emitARCCopyOperation(CodeGenFunction &CGF, Address dst, Address src,
2209 static llvm::Value *emitObjCValueOperation(CodeGenFunction &CGF,
2248 llvm::Value *CodeGenFunction::EmitARCRetain(QualType type, llvm::Value *value) {
2257 llvm::Value *CodeGenFunction::EmitARCRetainNonBlock(llvm::Value *value) {
2269 llvm::Value *CodeGenFunction::EmitARCRetainBlock(llvm::Value *value,
2293 static void emitAutoreleasedReturnValueMarker(CodeGenFunction &CGF) {
2334 CodeGenFunction &CGF) {
2379 CodeGenFunction::EmitARCRetainAutoreleasedReturnValue(llvm::Value *value) {
2391 CodeGenFunction::EmitARCUnsafeClaimAutoreleasedReturnValue(llvm::Value *value) {
2397 void CodeGenFunction::EmitARCRelease(llvm::Value *value,
2428 void CodeGenFunction::EmitARCDestroyStrong(Address addr,
2442 llvm::Value *CodeGenFunction::EmitARCStoreStrongCall(Address addr,
2466 llvm::Value *CodeGenFunction::EmitARCStoreStrong(LValue dst,
2501 llvm::Value *CodeGenFunction::EmitARCAutorelease(llvm::Value *value) {
2510 CodeGenFunction::EmitARCAutoreleaseReturnValue(llvm::Value *value) {
2520 CodeGenFunction::EmitARCRetainAutoreleaseReturnValue(llvm::Value *value) {
2532 llvm::Value *CodeGenFunction::EmitARCRetainAutorelease(QualType type,
2549 CodeGenFunction::EmitARCRetainAutoreleaseNonBlock(llvm::Value *value) {
2557 llvm::Value *CodeGenFunction::EmitARCLoadWeak(Address addr) {
2564 llvm::Value *CodeGenFunction::EmitARCLoadWeakRetained(Address addr) {
2572 llvm::Value *CodeGenFunction::EmitARCStoreWeak(Address addr,
2584 void CodeGenFunction::EmitARCInitWeak(Address addr, llvm::Value *value) {
2602 void CodeGenFunction::EmitARCDestroyWeak(Address addr) {
2618 void CodeGenFunction::EmitARCMoveWeak(Address dst, Address src) {
2627 void CodeGenFunction::EmitARCCopyWeak(Address dst, Address src) {
2633 void CodeGenFunction::emitARCCopyAssignWeak(QualType Ty, Address DstAddr,
2640 void CodeGenFunction::emitARCMoveAssignWeak(QualType Ty, Address DstAddr,
2650 llvm::Value *CodeGenFunction::EmitObjCAutoreleasePoolPush() {
2662 void CodeGenFunction::EmitObjCAutoreleasePoolPop(llvm::Value *value) {
2694 llvm::Value *CodeGenFunction::EmitObjCMRRAutoreleasePoolPush() {
2719 llvm::Value *CodeGenFunction::EmitObjCAlloc(llvm::Value *value,
2728 llvm::Value *CodeGenFunction::EmitObjCAllocWithZone(llvm::Value *value,
2735 llvm::Value *CodeGenFunction::EmitObjCAllocInit(llvm::Value *value,
2744 void CodeGenFunction::EmitObjCMRRAutoreleasePoolPop(llvm::Value *Arg) {
2752 void CodeGenFunction::destroyARCStrongPrecise(CodeGenFunction &CGF,
2758 void CodeGenFunction::destroyARCStrongImprecise(CodeGenFunction &CGF,
2764 void CodeGenFunction::destroyARCWeak(CodeGenFunction &CGF,
2770 void CodeGenFunction::emitARCIntrinsicUse(CodeGenFunction &CGF, Address addr,
2778 llvm::Value *CodeGenFunction::EmitObjCAutorelease(llvm::Value *value,
2788 llvm::Value *CodeGenFunction::EmitObjCRetainNonBlock(llvm::Value *value,
2797 void CodeGenFunction::EmitObjCRelease(llvm::Value *value,
2831 void Emit(CodeGenFunction &CGF, Flags flags) override {
2840 void Emit(CodeGenFunction &CGF, Flags flags) override {
2846 void CodeGenFunction::EmitObjCAutoreleasePoolCleanup(llvm::Value *Ptr) {
2868 static TryEmitResult tryEmitARCRetainLoadOfScalar(CodeGenFunction &CGF,
2882 static TryEmitResult tryEmitARCRetainLoadOfScalar(CodeGenFunction &CGF,
2921 if (CodeGenFunction::ConstantEmission constant = CGF.tryEmitAsConstant(DRE))
2929 typedef llvm::function_ref<llvm::Value *(CodeGenFunction &CGF,
2937 static llvm::Value *emitARCOperationAfterCall(CodeGenFunction &CGF,
2989 static llvm::Value *emitARCRetainCallResult(CodeGenFunction &CGF,
2993 [](CodeGenFunction &CGF, llvm::Value *value) {
2996 [](CodeGenFunction &CGF, llvm::Value *value) {
3003 static llvm::Value *emitARCUnsafeClaimCallResult(CodeGenFunction &CGF,
3007 [](CodeGenFunction &CGF, llvm::Value *value) {
3010 [](CodeGenFunction &CGF, llvm::Value *value) {
3015 llvm::Value *CodeGenFunction::EmitARCReclaimReturnedObject(const Expr *E,
3067 CodeGenFunction &CGF;
3070 ARCExprEmitter(CodeGenFunction &CGF) : CGF(CGF) {}
3103 SmallVector<CodeGenFunction::OpaqueValueMappingData, 4> opaques;
3117 typedef CodeGenFunction::OpaqueValueMappingData OVMA;
3242 CGF.EmitCheckedLValue(e->getLHS(), CodeGenFunction::TCK_Store);
3313 ARCRetainExprEmitter(CodeGenFunction &CGF) : ARCExprEmitter(CGF) {}
3400 tryEmitARCRetainScalarExpr(CodeGenFunction &CGF, const Expr *e) {
3404 static llvm::Value *emitARCRetainLoadOfScalar(CodeGenFunction &CGF,
3418 llvm::Value *CodeGenFunction::EmitARCRetainScalarExpr(const Expr *e) {
3433 CodeGenFunction::EmitARCRetainAutoreleaseScalarExpr(const Expr *e) {
3449 llvm::Value *CodeGenFunction::EmitARCExtendBlockObject(const Expr *e) {
3467 llvm::Value *CodeGenFunction::EmitObjCThrowOperand(const Expr *expr) {
3489 ARCUnsafeUnretainedExprEmitter(CodeGenFunction &CGF) : ARCExprEmitter(CGF) {}
3534 static llvm::Value *emitARCUnsafeUnretainedScalarExpr(CodeGenFunction &CGF,
3543 llvm::Value *CodeGenFunction::EmitARCUnsafeUnretainedScalarExpr(const Expr *e) {
3554 CodeGenFunction::EmitARCStoreUnsafeUnretained(const BinaryOperator *e,
3573 CodeGenFunction::EmitARCStoreStrong(const BinaryOperator *e,
3604 CodeGenFunction::EmitARCStoreAutoreleasing(const BinaryOperator *e) {
3613 void CodeGenFunction::EmitObjCAutoreleasePoolStmt(
3641 void CodeGenFunction::EmitExtendGCLifetime(llvm::Value *object) {
3659 CodeGenFunction::GenerateObjCAtomicSetterCopyHelperFunction(
3743 CodeGenFunction::GenerateObjCAtomicGetterCopyHelperFunction(
3849 CodeGenFunction::EmitBlockCopyAndAutorelease(llvm::Value *Block, QualType Ty) {
3889 static llvm::Value *emitIsPlatformVersionAtLeast(CodeGenFunction &CGF,
3924 CodeGenFunction::EmitBuiltinAvailable(const VersionTuple &Version) {
4005 CodeGenFunction CGF(*this);