Lines Matching refs:CGF
1023 CodeGen::RValue EmitMessageSend(CodeGen::CodeGenFunction &CGF,
1091 llvm::Value *EmitClassRef(CodeGenFunction &CGF,
1094 llvm::Value *EmitClassRefFromId(CodeGenFunction &CGF,
1097 llvm::Value *EmitNSAutoreleasePoolClassRef(CodeGenFunction &CGF) override;
1175 llvm::Value *EmitSelector(CodeGenFunction &CGF, Selector Sel,
1183 CodeGen::RValue GenerateMessageSend(CodeGen::CodeGenFunction &CGF,
1192 GenerateMessageSendSuper(CodeGen::CodeGenFunction &CGF,
1199 llvm::Value *GetClass(CodeGenFunction &CGF,
1202 llvm::Value *GetSelector(CodeGenFunction &CGF, Selector Sel,
1207 llvm::Value *GetSelector(CodeGenFunction &CGF,
1218 llvm::Value *GenerateProtocolRef(CodeGenFunction &CGF,
1231 void EmitTryStmt(CodeGen::CodeGenFunction &CGF,
1233 void EmitSynchronizedStmt(CodeGen::CodeGenFunction &CGF,
1235 void EmitTryOrSynchronizedStmt(CodeGen::CodeGenFunction &CGF, const Stmt &S);
1236 void EmitThrowStmt(CodeGen::CodeGenFunction &CGF, const ObjCAtThrowStmt &S,
1238 llvm::Value * EmitObjCWeakRead(CodeGen::CodeGenFunction &CGF,
1240 void EmitObjCWeakAssign(CodeGen::CodeGenFunction &CGF,
1242 void EmitObjCGlobalAssign(CodeGen::CodeGenFunction &CGF,
1245 void EmitObjCIvarAssign(CodeGen::CodeGenFunction &CGF,
1248 void EmitObjCStrongCastAssign(CodeGen::CodeGenFunction &CGF,
1250 void EmitGCMemmoveCollectable(CodeGen::CodeGenFunction &CGF,
1254 LValue EmitObjCValueForIvar(CodeGen::CodeGenFunction &CGF, QualType ObjectTy,
1257 llvm::Value *EmitIvarOffset(CodeGen::CodeGenFunction &CGF,
1353 CodeGen::RValue EmitVTableMessageSend(CodeGen::CodeGenFunction &CGF,
1370 llvm::Value *EmitClassRef(CodeGenFunction &CGF,
1373 llvm::Value *EmitClassRefFromId(CodeGenFunction &CGF,
1377 llvm::Value *EmitNSAutoreleasePoolClassRef(CodeGenFunction &CGF) override;
1381 llvm::Value *EmitSuperClassRef(CodeGenFunction &CGF,
1386 llvm::Value *EmitMetaClassRef(CodeGenFunction &CGF,
1398 llvm::Value *EmitSelector(CodeGenFunction &CGF, Selector Sel,
1433 bool IsIvarOffsetKnownIdempotent(const CodeGen::CodeGenFunction &CGF, in IsIvarOffsetKnownIdempotent() argument
1446 dyn_cast_or_null<ObjCMethodDecl>(CGF.CurFuncDecl)) in IsIvarOffsetKnownIdempotent()
1458 CodeGen::RValue GenerateMessageSend(CodeGen::CodeGenFunction &CGF,
1467 GenerateMessageSendSuper(CodeGen::CodeGenFunction &CGF,
1474 llvm::Value *GetClass(CodeGenFunction &CGF,
1477 llvm::Value *GetSelector(CodeGenFunction &CGF, Selector Sel, in GetSelector() argument
1479 { return EmitSelector(CGF, Sel, lvalue); } in GetSelector()
1483 llvm::Value *GetSelector(CodeGenFunction &CGF, in GetSelector() argument
1485 { return EmitSelector(CGF, Method->getSelector()); } in GetSelector()
1493 llvm::Value *GenerateProtocolRef(CodeGenFunction &CGF,
1527 void EmitTryStmt(CodeGen::CodeGenFunction &CGF,
1529 void EmitSynchronizedStmt(CodeGen::CodeGenFunction &CGF,
1531 void EmitThrowStmt(CodeGen::CodeGenFunction &CGF, const ObjCAtThrowStmt &S,
1533 llvm::Value * EmitObjCWeakRead(CodeGen::CodeGenFunction &CGF,
1535 void EmitObjCWeakAssign(CodeGen::CodeGenFunction &CGF,
1537 void EmitObjCGlobalAssign(CodeGen::CodeGenFunction &CGF,
1540 void EmitObjCIvarAssign(CodeGen::CodeGenFunction &CGF,
1543 void EmitObjCStrongCastAssign(CodeGen::CodeGenFunction &CGF,
1545 void EmitGCMemmoveCollectable(CodeGen::CodeGenFunction &CGF,
1548 LValue EmitObjCValueForIvar(CodeGen::CodeGenFunction &CGF, QualType ObjectTy,
1551 llvm::Value *EmitIvarOffset(CodeGen::CodeGenFunction &CGF,
1563 void init(CodeGenFunction &CGF, llvm::Value *receiver) { in init()
1565 NullBB = CGF.createBasicBlock("msgSend.null-receiver"); in init()
1566 llvm::BasicBlock *callBB = CGF.createBasicBlock("msgSend.call"); in init()
1572 llvm::Value *isNull = CGF.Builder.CreateIsNull(receiver); in init()
1573 CGF.Builder.CreateCondBr(isNull, NullBB, callBB); in init()
1576 CGF.EmitBlock(callBB); in init()
1581 RValue complete(CodeGenFunction &CGF, RValue result, QualType resultType, in complete()
1592 llvm::BasicBlock *callBB = CGF.Builder.GetInsertBlock(); in complete()
1594 contBB = CGF.createBasicBlock("msgSend.cont"); in complete()
1595 CGF.Builder.CreateBr(contBB); in complete()
1599 CGF.EmitBlock(NullBB); in complete()
1611 CGF.EmitARCRelease(RV.getScalarVal(), ARCImpreciseLifetime); in complete()
1617 assert(CGF.Builder.GetInsertBlock() == NullBB); in complete()
1622 if (contBB) CGF.EmitBlock(contBB); in complete()
1629 llvm::Constant *null = CGF.CGM.EmitNullConstant(resultType); in complete()
1635 CGF.EmitBlock(contBB); in complete()
1636 llvm::PHINode *phi = CGF.Builder.CreatePHI(null->getType(), 2); in complete()
1648 CGF.EmitNullInitialization(result.getAggregateAddr(), resultType); in complete()
1649 if (contBB) CGF.EmitBlock(contBB); in complete()
1654 CGF.EmitBlock(contBB); in complete()
1662 llvm::PHINode *real = CGF.Builder.CreatePHI(scalarTy, 2); in complete()
1665 llvm::PHINode *imag = CGF.Builder.CreatePHI(scalarTy, 2); in complete()
1708 llvm::Value *CGObjCMac::GetClass(CodeGenFunction &CGF, in GetClass() argument
1710 return EmitClassRef(CGF, ID); in GetClass()
1714 llvm::Value *CGObjCMac::GetSelector(CodeGenFunction &CGF, Selector Sel, in GetSelector() argument
1716 return EmitSelector(CGF, Sel, lval); in GetSelector()
1718 llvm::Value *CGObjCMac::GetSelector(CodeGenFunction &CGF, const ObjCMethodDecl in GetSelector() argument
1720 return EmitSelector(CGF, Method->getSelector()); in GetSelector()
1774 CGObjCMac::GenerateMessageSendSuper(CodeGen::CodeGenFunction &CGF, in GenerateMessageSendSuper() argument
1787 CGF.CreateTempAlloca(ObjCTypes.SuperTy, "objc_super"); in GenerateMessageSendSuper()
1789 CGF.Builder.CreateBitCast(Receiver, ObjCTypes.ObjectPtrTy); in GenerateMessageSendSuper()
1790 CGF.Builder.CreateStore( in GenerateMessageSendSuper()
1792 CGF.Builder.CreateStructGEP(ObjCTypes.SuperTy, ObjCSuper, 0)); in GenerateMessageSendSuper()
1804 Target = EmitClassRef(CGF, Class->getSuperClass()); in GenerateMessageSendSuper()
1805 Target = CGF.Builder.CreateStructGEP(ObjCTypes.ClassTy, Target, 0); in GenerateMessageSendSuper()
1806 Target = CGF.Builder.CreateLoad(Target); in GenerateMessageSendSuper()
1810 CGF.Builder.CreateStructGEP(ObjCTypes.ClassTy, MetaClassPtr, 1); in GenerateMessageSendSuper()
1811 llvm::Value *Super = CGF.Builder.CreateLoad(SuperPtr); in GenerateMessageSendSuper()
1815 Target = EmitClassRef(CGF, Class->getSuperClass()); in GenerateMessageSendSuper()
1818 ClassPtr = CGF.Builder.CreateStructGEP(ObjCTypes.ClassTy, ClassPtr, 1); in GenerateMessageSendSuper()
1819 Target = CGF.Builder.CreateLoad(ClassPtr); in GenerateMessageSendSuper()
1824 CGM.getTypes().ConvertType(CGF.getContext().getObjCClassType()); in GenerateMessageSendSuper()
1825 Target = CGF.Builder.CreateBitCast(Target, ClassTy); in GenerateMessageSendSuper()
1826 CGF.Builder.CreateStore( in GenerateMessageSendSuper()
1827 Target, CGF.Builder.CreateStructGEP(ObjCTypes.SuperTy, ObjCSuper, 1)); in GenerateMessageSendSuper()
1828 return EmitMessageSend(CGF, Return, ResultType, in GenerateMessageSendSuper()
1829 EmitSelector(CGF, Sel), in GenerateMessageSendSuper()
1835 CodeGen::RValue CGObjCMac::GenerateMessageSend(CodeGen::CodeGenFunction &CGF, in GenerateMessageSend() argument
1843 return EmitMessageSend(CGF, Return, ResultType, in GenerateMessageSend()
1844 EmitSelector(CGF, Sel), in GenerateMessageSend()
1845 Receiver, CGF.getContext().getObjCIdType(), in GenerateMessageSend()
1850 CGObjCCommonMac::EmitMessageSend(CodeGen::CodeGenFunction &CGF, in EmitMessageSend() argument
1862 Arg0 = CGF.Builder.CreateBitCast(Arg0, ObjCTypes.ObjectPtrTy); in EmitMessageSend()
1864 ActualArgs.add(RValue::get(Sel), CGF.getContext().getObjCSelType()); in EmitMessageSend()
1879 if (!IsSuper) nullReturn.init(CGF, Arg0); in EmitMessageSend()
1892 nullReturn.init(CGF, Arg0); in EmitMessageSend()
1902 nullReturn.init(CGF, Arg0); in EmitMessageSend()
1909 RValue rvalue = CGF.EmitCall(MSI.CallInfo, Fn, Return, ActualArgs); in EmitMessageSend()
1910 return nullReturn.complete(CGF, rvalue, ResultType, CallArgs, in EmitMessageSend()
2520 llvm::Value *CGObjCMac::GenerateProtocolRef(CodeGenFunction &CGF, in GenerateProtocolRef() argument
3414 void CGObjCMac::EmitTryStmt(CodeGenFunction &CGF, const ObjCAtTryStmt &S) { in EmitTryStmt() argument
3415 return EmitTryOrSynchronizedStmt(CGF, S); in EmitTryStmt()
3418 void CGObjCMac::EmitSynchronizedStmt(CodeGenFunction &CGF, in EmitSynchronizedStmt() argument
3420 return EmitTryOrSynchronizedStmt(CGF, S); in EmitSynchronizedStmt()
3438 void Emit(CodeGenFunction &CGF, Flags flags) override { in Emit()
3442 CGF.createBasicBlock("finally.call_exit"); in Emit()
3444 CGF.createBasicBlock("finally.no_call_exit"); in Emit()
3445 CGF.Builder.CreateCondBr(CGF.Builder.CreateLoad(CallTryExitVar), in Emit()
3448 CGF.EmitBlock(FinallyCallExit); in Emit()
3449 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionTryExitFn(), in Emit()
3452 CGF.EmitBlock(FinallyNoCallExit); in Emit()
3463 CGF.Builder.CreateLoad(CGF.getNormalCleanupDestSlot()); in Emit()
3465 CGF.EmitStmt(FinallyStmt->getFinallyBody()); in Emit()
3467 if (CGF.HaveInsertPoint()) { in Emit()
3468 CGF.Builder.CreateStore(CurCleanupDest, in Emit()
3469 CGF.getNormalCleanupDestSlot()); in Emit()
3472 CGF.EnsureInsertPoint(); in Emit()
3478 llvm::Value *SyncArg = CGF.Builder.CreateLoad(SyncArgSlot); in Emit()
3479 CGF.EmitNounwindRuntimeCall(ObjCTypes.getSyncExitFn(), SyncArg); in Emit()
3485 CodeGenFunction &CGF; member in __anonba8b4b990311::FragileHazards
3498 FragileHazards(CodeGenFunction &CGF);
3510 FragileHazards::FragileHazards(CodeGenFunction &CGF) : CGF(CGF) { in FragileHazards() argument
3517 I = CGF.CurFn->begin(), E = CGF.CurFn->end(); I != E; ++I) in FragileHazards()
3556 CGF.EmitNounwindRuntimeCall(WriteHazard, Locals); in emitWriteHazard()
3563 call->setCallingConv(CGF.getRuntimeCC()); in emitReadHazard()
3571 CGBuilderTy Builder(CGF.getLLVMContext()); in emitHazardsInNewBlocks()
3575 FI = CGF.CurFn->begin(), FE = CGF.CurFn->end(); FI != FE; ++FI) { in emitHazardsInNewBlocks()
3613 addIfPresent(AllocasToIgnore, CGF.ReturnValue); in collectLocals()
3614 addIfPresent(AllocasToIgnore, CGF.NormalCleanupDest); in collectLocals()
3618 llvm::BasicBlock &Entry = CGF.CurFn->getEntryBlock(); in collectLocals()
3629 return llvm::FunctionType::get(CGF.VoidTy, tys, false); in GetAsmFnType()
3744 void CGObjCMac::EmitTryOrSynchronizedStmt(CodeGen::CodeGenFunction &CGF, in EmitTryOrSynchronizedStmt() argument
3751 CGF.getJumpDestInCurrentScope("finally.end"); in EmitTryOrSynchronizedStmt()
3756 CGF.getJumpDestInCurrentScope("finally.rethrow"); in EmitTryOrSynchronizedStmt()
3766 CGF.EmitScalarExpr(cast<ObjCAtSynchronizedStmt>(S).getSynchExpr()); in EmitTryOrSynchronizedStmt()
3767 SyncArg = CGF.Builder.CreateBitCast(SyncArg, ObjCTypes.ObjectPtrTy); in EmitTryOrSynchronizedStmt()
3768 CGF.EmitNounwindRuntimeCall(ObjCTypes.getSyncEnterFn(), SyncArg); in EmitTryOrSynchronizedStmt()
3770 SyncArgSlot = CGF.CreateTempAlloca(SyncArg->getType(), "sync.arg"); in EmitTryOrSynchronizedStmt()
3771 CGF.Builder.CreateStore(SyncArg, SyncArgSlot); in EmitTryOrSynchronizedStmt()
3776 llvm::Value *ExceptionData = CGF.CreateTempAlloca(ObjCTypes.ExceptionDataTy, in EmitTryOrSynchronizedStmt()
3783 FragileHazards Hazards(CGF); in EmitTryOrSynchronizedStmt()
3793 llvm::Value *CallTryExitVar = CGF.CreateTempAlloca(CGF.Builder.getInt1Ty(), in EmitTryOrSynchronizedStmt()
3801 CGF.EHStack.pushCleanup<PerformFragileFinally>(NormalAndEHCleanup, &S, in EmitTryOrSynchronizedStmt()
3810 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionTryEnterFn(), in EmitTryOrSynchronizedStmt()
3814 llvm::Constant *Zero = llvm::ConstantInt::get(CGF.Builder.getInt32Ty(), 0); in EmitTryOrSynchronizedStmt()
3816 llvm::Value *SetJmpBuffer = CGF.Builder.CreateGEP( in EmitTryOrSynchronizedStmt()
3818 llvm::CallInst *SetJmpResult = CGF.EmitNounwindRuntimeCall( in EmitTryOrSynchronizedStmt()
3824 llvm::BasicBlock *TryBlock = CGF.createBasicBlock("try"); in EmitTryOrSynchronizedStmt()
3825 llvm::BasicBlock *TryHandler = CGF.createBasicBlock("try.handler"); in EmitTryOrSynchronizedStmt()
3827 CGF.Builder.CreateIsNotNull(SetJmpResult, "did_catch_exception"); in EmitTryOrSynchronizedStmt()
3828 CGF.Builder.CreateCondBr(DidCatch, TryHandler, TryBlock); in EmitTryOrSynchronizedStmt()
3831 CGF.EmitBlock(TryBlock); in EmitTryOrSynchronizedStmt()
3832 CGF.Builder.CreateStore(CGF.Builder.getTrue(), CallTryExitVar); in EmitTryOrSynchronizedStmt()
3833 CGF.EmitStmt(isTry ? cast<ObjCAtTryStmt>(S).getTryBody() in EmitTryOrSynchronizedStmt()
3836 CGBuilderTy::InsertPoint TryFallthroughIP = CGF.Builder.saveAndClearIP(); in EmitTryOrSynchronizedStmt()
3839 CGF.EmitBlock(TryHandler); in EmitTryOrSynchronizedStmt()
3848 CGF.Builder.CreateStore(CGF.Builder.getFalse(), CallTryExitVar); in EmitTryOrSynchronizedStmt()
3849 CGF.EmitBranchThroughCleanup(FinallyRethrow); in EmitTryOrSynchronizedStmt()
3856 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionExtractFn(), in EmitTryOrSynchronizedStmt()
3861 CGF.ObjCEHValueStack.push_back(Caught); in EmitTryOrSynchronizedStmt()
3872 PropagatingExnVar = CGF.CreateTempAlloca(Caught->getType(), in EmitTryOrSynchronizedStmt()
3874 CGF.Builder.CreateStore(Caught, PropagatingExnVar); in EmitTryOrSynchronizedStmt()
3878 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionTryEnterFn(), in EmitTryOrSynchronizedStmt()
3882 CGF.EmitNounwindRuntimeCall(ObjCTypes.getSetJmpFn(), in EmitTryOrSynchronizedStmt()
3887 CGF.Builder.CreateIsNotNull(SetJmpResult, "did_catch_exception"); in EmitTryOrSynchronizedStmt()
3889 CatchBlock = CGF.createBasicBlock("catch"); in EmitTryOrSynchronizedStmt()
3890 CatchHandler = CGF.createBasicBlock("catch_for_catch"); in EmitTryOrSynchronizedStmt()
3891 CGF.Builder.CreateCondBr(Threw, CatchHandler, CatchBlock); in EmitTryOrSynchronizedStmt()
3893 CGF.EmitBlock(CatchBlock); in EmitTryOrSynchronizedStmt()
3896 CGF.Builder.CreateStore(CGF.Builder.getInt1(HasFinally), CallTryExitVar); in EmitTryOrSynchronizedStmt()
3924 CodeGenFunction::RunCleanupsScope CatchVarCleanups(CGF); in EmitTryOrSynchronizedStmt()
3927 CGF.EmitAutoVarDecl(*CatchParam); in EmitTryOrSynchronizedStmt()
3928 assert(CGF.HaveInsertPoint() && "DeclStmt destroyed insert point?"); in EmitTryOrSynchronizedStmt()
3931 CGF.Builder.CreateStore(Caught, CGF.GetAddrOfLocalVar(CatchParam)); in EmitTryOrSynchronizedStmt()
3934 CGF.EmitStmt(CatchStmt->getCatchBody()); in EmitTryOrSynchronizedStmt()
3939 CGF.EmitBranchThroughCleanup(FinallyEnd); in EmitTryOrSynchronizedStmt()
3951 llvm::Value *Class = EmitClassRef(CGF, IDecl); in EmitTryOrSynchronizedStmt()
3955 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionMatchFn(), in EmitTryOrSynchronizedStmt()
3958 llvm::BasicBlock *MatchedBlock = CGF.createBasicBlock("match"); in EmitTryOrSynchronizedStmt()
3959 llvm::BasicBlock *NextCatchBlock = CGF.createBasicBlock("catch.next"); in EmitTryOrSynchronizedStmt()
3961 CGF.Builder.CreateCondBr(CGF.Builder.CreateIsNotNull(Match, "matched"), in EmitTryOrSynchronizedStmt()
3965 CGF.EmitBlock(MatchedBlock); in EmitTryOrSynchronizedStmt()
3969 CodeGenFunction::RunCleanupsScope CatchVarCleanups(CGF); in EmitTryOrSynchronizedStmt()
3971 CGF.EmitAutoVarDecl(*CatchParam); in EmitTryOrSynchronizedStmt()
3972 assert(CGF.HaveInsertPoint() && "DeclStmt destroyed insert point?"); in EmitTryOrSynchronizedStmt()
3976 CGF.Builder.CreateBitCast(Caught, in EmitTryOrSynchronizedStmt()
3977 CGF.ConvertType(CatchParam->getType())); in EmitTryOrSynchronizedStmt()
3978 CGF.Builder.CreateStore(Tmp, CGF.GetAddrOfLocalVar(CatchParam)); in EmitTryOrSynchronizedStmt()
3980 CGF.EmitStmt(CatchStmt->getCatchBody()); in EmitTryOrSynchronizedStmt()
3985 CGF.EmitBranchThroughCleanup(FinallyEnd); in EmitTryOrSynchronizedStmt()
3987 CGF.EmitBlock(NextCatchBlock); in EmitTryOrSynchronizedStmt()
3990 CGF.ObjCEHValueStack.pop_back(); in EmitTryOrSynchronizedStmt()
3998 CGF.EmitBranchThroughCleanup(FinallyRethrow); in EmitTryOrSynchronizedStmt()
4002 CGF.EmitBlock(CatchHandler); in EmitTryOrSynchronizedStmt()
4013 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionExtractFn(), in EmitTryOrSynchronizedStmt()
4015 CGF.Builder.CreateStore(NewCaught, PropagatingExnVar); in EmitTryOrSynchronizedStmt()
4018 CGF.Builder.CreateStore(CGF.Builder.getFalse(), CallTryExitVar); in EmitTryOrSynchronizedStmt()
4019 CGF.EmitBranchThroughCleanup(FinallyRethrow); in EmitTryOrSynchronizedStmt()
4027 CGF.Builder.restoreIP(TryFallthroughIP); in EmitTryOrSynchronizedStmt()
4028 if (CGF.HaveInsertPoint()) in EmitTryOrSynchronizedStmt()
4029 CGF.Builder.CreateStore(CGF.Builder.getTrue(), CallTryExitVar); in EmitTryOrSynchronizedStmt()
4030 CGF.PopCleanupBlock(); in EmitTryOrSynchronizedStmt()
4031 CGF.EmitBlock(FinallyEnd.getBlock(), true); in EmitTryOrSynchronizedStmt()
4034 CGBuilderTy::InsertPoint SavedIP = CGF.Builder.saveAndClearIP(); in EmitTryOrSynchronizedStmt()
4035 CGF.EmitBlock(FinallyRethrow.getBlock(), true); in EmitTryOrSynchronizedStmt()
4036 if (CGF.HaveInsertPoint()) { in EmitTryOrSynchronizedStmt()
4040 PropagatingExn = CGF.Builder.CreateLoad(PropagatingExnVar); in EmitTryOrSynchronizedStmt()
4045 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionExtractFn(), in EmitTryOrSynchronizedStmt()
4050 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionThrowFn(), in EmitTryOrSynchronizedStmt()
4052 CGF.Builder.CreateUnreachable(); in EmitTryOrSynchronizedStmt()
4055 CGF.Builder.restoreIP(SavedIP); in EmitTryOrSynchronizedStmt()
4058 void CGObjCMac::EmitThrowStmt(CodeGen::CodeGenFunction &CGF, in EmitThrowStmt() argument
4064 llvm::Value *Exception = CGF.EmitObjCThrowOperand(ThrowExpr); in EmitThrowStmt()
4066 CGF.Builder.CreateBitCast(Exception, ObjCTypes.ObjectPtrTy); in EmitThrowStmt()
4068 assert((!CGF.ObjCEHValueStack.empty() && CGF.ObjCEHValueStack.back()) && in EmitThrowStmt()
4070 ExceptionAsObject = CGF.ObjCEHValueStack.back(); in EmitThrowStmt()
4073 CGF.EmitRuntimeCall(ObjCTypes.getExceptionThrowFn(), ExceptionAsObject) in EmitThrowStmt()
4075 CGF.Builder.CreateUnreachable(); in EmitThrowStmt()
4079 CGF.Builder.ClearInsertionPoint(); in EmitThrowStmt()
4085 llvm::Value * CGObjCMac::EmitObjCWeakRead(CodeGen::CodeGenFunction &CGF, in EmitObjCWeakRead() argument
4089 AddrWeakObj = CGF.Builder.CreateBitCast(AddrWeakObj, in EmitObjCWeakRead()
4092 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcReadWeakFn(), in EmitObjCWeakRead()
4094 read_weak = CGF.Builder.CreateBitCast(read_weak, DestTy); in EmitObjCWeakRead()
4101 void CGObjCMac::EmitObjCWeakAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCWeakAssign() argument
4107 src = (Size == 4) ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) in EmitObjCWeakAssign()
4108 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongLongTy); in EmitObjCWeakAssign()
4109 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCWeakAssign()
4111 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCWeakAssign()
4112 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy); in EmitObjCWeakAssign()
4114 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignWeakFn(), in EmitObjCWeakAssign()
4122 void CGObjCMac::EmitObjCGlobalAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCGlobalAssign() argument
4129 src = (Size == 4) ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) in EmitObjCGlobalAssign()
4130 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongLongTy); in EmitObjCGlobalAssign()
4131 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCGlobalAssign()
4133 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCGlobalAssign()
4134 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy); in EmitObjCGlobalAssign()
4137 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignGlobalFn(), in EmitObjCGlobalAssign()
4140 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignThreadLocalFn(), in EmitObjCGlobalAssign()
4148 void CGObjCMac::EmitObjCIvarAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCIvarAssign() argument
4156 src = (Size == 4) ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) in EmitObjCIvarAssign()
4157 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongLongTy); in EmitObjCIvarAssign()
4158 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCIvarAssign()
4160 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCIvarAssign()
4161 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy); in EmitObjCIvarAssign()
4163 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignIvarFn(), args); in EmitObjCIvarAssign()
4170 void CGObjCMac::EmitObjCStrongCastAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCStrongCastAssign() argument
4176 src = (Size == 4) ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) in EmitObjCStrongCastAssign()
4177 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongLongTy); in EmitObjCStrongCastAssign()
4178 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCStrongCastAssign()
4180 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCStrongCastAssign()
4181 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy); in EmitObjCStrongCastAssign()
4183 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignStrongCastFn(), in EmitObjCStrongCastAssign()
4188 void CGObjCMac::EmitGCMemmoveCollectable(CodeGen::CodeGenFunction &CGF, in EmitGCMemmoveCollectable() argument
4192 SrcPtr = CGF.Builder.CreateBitCast(SrcPtr, ObjCTypes.Int8PtrTy); in EmitGCMemmoveCollectable()
4193 DestPtr = CGF.Builder.CreateBitCast(DestPtr, ObjCTypes.Int8PtrTy); in EmitGCMemmoveCollectable()
4195 CGF.EmitNounwindRuntimeCall(ObjCTypes.GcMemmoveCollectableFn(), args); in EmitGCMemmoveCollectable()
4200 LValue CGObjCMac::EmitObjCValueForIvar(CodeGen::CodeGenFunction &CGF, in EmitObjCValueForIvar() argument
4207 return EmitValueForIvarAtOffset(CGF, ID, BaseValue, Ivar, CVRQualifiers, in EmitObjCValueForIvar()
4208 EmitIvarOffset(CGF, ID, Ivar)); in EmitObjCValueForIvar()
4211 llvm::Value *CGObjCMac::EmitIvarOffset(CodeGen::CodeGenFunction &CGF, in EmitIvarOffset() argument
4363 llvm::Value *CGObjCMac::EmitClassRefFromId(CodeGenFunction &CGF, in EmitClassRefFromId() argument
4378 return CGF.Builder.CreateLoad(Entry); in EmitClassRefFromId()
4381 llvm::Value *CGObjCMac::EmitClassRef(CodeGenFunction &CGF, in EmitClassRef() argument
4383 return EmitClassRefFromId(CGF, ID->getIdentifier()); in EmitClassRef()
4386 llvm::Value *CGObjCMac::EmitNSAutoreleasePoolClassRef(CodeGenFunction &CGF) { in EmitNSAutoreleasePoolClassRef() argument
4388 return EmitClassRefFromId(CGF, II); in EmitNSAutoreleasePoolClassRef()
4391 llvm::Value *CGObjCMac::EmitSelector(CodeGenFunction &CGF, Selector Sel, in EmitSelector() argument
4407 return CGF.Builder.CreateLoad(Entry); in EmitSelector()
5877 llvm::Value *CGObjCNonFragileABIMac::GenerateProtocolRef(CodeGenFunction &CGF, in GenerateProtocolRef() argument
5892 return CGF.Builder.CreateLoad(PTGV); in GenerateProtocolRef()
5902 return CGF.Builder.CreateLoad(PTGV); in GenerateProtocolRef()
6415 CodeGen::CodeGenFunction &CGF, in EmitObjCValueForIvar() argument
6421 llvm::Value *Offset = EmitIvarOffset(CGF, ID, Ivar); in EmitObjCValueForIvar()
6422 return EmitValueForIvarAtOffset(CGF, ID, BaseValue, Ivar, CVRQualifiers, in EmitObjCValueForIvar()
6427 CodeGen::CodeGenFunction &CGF, in EmitIvarOffset() argument
6431 IvarOffsetValue = CGF.Builder.CreateLoad(IvarOffsetValue, "ivar"); in EmitIvarOffset()
6432 if (IsIvarOffsetKnownIdempotent(CGF, Ivar)) in EmitIvarOffset()
6441 IvarOffsetValue = CGF.Builder.CreateIntCast( in EmitIvarOffset()
6470 CGObjCNonFragileABIMac::EmitVTableMessageSend(CodeGenFunction &CGF, in EmitVTableMessageSend() argument
6484 arg0 = CGF.Builder.CreateBitCast(arg0, ObjCTypes.ObjectPtrTy); in EmitVTableMessageSend()
6511 nullReturn.init(CGF, arg0); in EmitVTableMessageSend()
6556 nullReturn.init(CGF, arg0); in EmitVTableMessageSend()
6563 CGF.Builder.CreateBitCast(messageRef, ObjCTypes.MessageRefPtrTy); in EmitVTableMessageSend()
6570 CGF.Builder.CreateStructGEP(ObjCTypes.MessageRefTy, mref, 0); in EmitVTableMessageSend()
6571 callee = CGF.Builder.CreateLoad(callee, "msgSend_fn"); in EmitVTableMessageSend()
6573 callee = CGF.Builder.CreateBitCast(callee, MSI.MessengerType); in EmitVTableMessageSend()
6575 RValue result = CGF.EmitCall(MSI.CallInfo, callee, returnSlot, args); in EmitVTableMessageSend()
6576 return nullReturn.complete(CGF, result, resultType, formalArgs, in EmitVTableMessageSend()
6582 CGObjCNonFragileABIMac::GenerateMessageSend(CodeGen::CodeGenFunction &CGF, in GenerateMessageSend() argument
6591 ? EmitVTableMessageSend(CGF, Return, ResultType, Sel, in GenerateMessageSend()
6592 Receiver, CGF.getContext().getObjCIdType(), in GenerateMessageSend()
6594 : EmitMessageSend(CGF, Return, ResultType, in GenerateMessageSend()
6595 EmitSelector(CGF, Sel), in GenerateMessageSend()
6596 Receiver, CGF.getContext().getObjCIdType(), in GenerateMessageSend()
6616 llvm::Value *CGObjCNonFragileABIMac::EmitClassRefFromId(CodeGenFunction &CGF, in EmitClassRefFromId() argument
6636 return CGF.Builder.CreateLoad(Entry); in EmitClassRefFromId()
6639 llvm::Value *CGObjCNonFragileABIMac::EmitClassRef(CodeGenFunction &CGF, in EmitClassRef() argument
6641 return EmitClassRefFromId(CGF, ID->getIdentifier(), ID->isWeakImported(), ID); in EmitClassRef()
6645 CodeGenFunction &CGF) { in EmitNSAutoreleasePoolClassRef() argument
6647 return EmitClassRefFromId(CGF, II, false, 0); in EmitNSAutoreleasePoolClassRef()
6651 CGObjCNonFragileABIMac::EmitSuperClassRef(CodeGenFunction &CGF, in EmitSuperClassRef() argument
6669 return CGF.Builder.CreateLoad(Entry); in EmitSuperClassRef()
6675 llvm::Value *CGObjCNonFragileABIMac::EmitMetaClassRef(CodeGenFunction &CGF, in EmitMetaClassRef() argument
6695 return CGF.Builder.CreateLoad(Entry); in EmitMetaClassRef()
6700 llvm::Value *CGObjCNonFragileABIMac::GetClass(CodeGenFunction &CGF, in GetClass() argument
6710 return EmitClassRef(CGF, ID); in GetClass()
6717 CGObjCNonFragileABIMac::GenerateMessageSendSuper(CodeGen::CodeGenFunction &CGF, in GenerateMessageSendSuper() argument
6731 CGF.CreateTempAlloca(ObjCTypes.SuperTy, "objc_super"); in GenerateMessageSendSuper()
6734 CGF.Builder.CreateBitCast(Receiver, ObjCTypes.ObjectPtrTy); in GenerateMessageSendSuper()
6735 CGF.Builder.CreateStore( in GenerateMessageSendSuper()
6737 CGF.Builder.CreateStructGEP(ObjCTypes.SuperTy, ObjCSuper, 0)); in GenerateMessageSendSuper()
6742 Target = EmitMetaClassRef(CGF, Class, Class->isWeakImported()); in GenerateMessageSendSuper()
6744 Target = EmitSuperClassRef(CGF, Class); in GenerateMessageSendSuper()
6749 CGM.getTypes().ConvertType(CGF.getContext().getObjCClassType()); in GenerateMessageSendSuper()
6750 Target = CGF.Builder.CreateBitCast(Target, ClassTy); in GenerateMessageSendSuper()
6751 CGF.Builder.CreateStore( in GenerateMessageSendSuper()
6752 Target, CGF.Builder.CreateStructGEP(ObjCTypes.SuperTy, ObjCSuper, 1)); in GenerateMessageSendSuper()
6755 ? EmitVTableMessageSend(CGF, Return, ResultType, Sel, in GenerateMessageSendSuper()
6758 : EmitMessageSend(CGF, Return, ResultType, in GenerateMessageSendSuper()
6759 EmitSelector(CGF, Sel), in GenerateMessageSendSuper()
6764 llvm::Value *CGObjCNonFragileABIMac::EmitSelector(CodeGenFunction &CGF, in EmitSelector() argument
6782 llvm::LoadInst* LI = CGF.Builder.CreateLoad(Entry); in EmitSelector()
6791 void CGObjCNonFragileABIMac::EmitObjCIvarAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCIvarAssign() argument
6799 src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) in EmitObjCIvarAssign()
6800 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy)); in EmitObjCIvarAssign()
6801 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCIvarAssign()
6803 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCIvarAssign()
6804 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy); in EmitObjCIvarAssign()
6806 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignIvarFn(), args); in EmitObjCIvarAssign()
6813 CodeGen::CodeGenFunction &CGF, in EmitObjCStrongCastAssign() argument
6819 src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) in EmitObjCStrongCastAssign()
6820 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy)); in EmitObjCStrongCastAssign()
6821 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCStrongCastAssign()
6823 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCStrongCastAssign()
6824 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy); in EmitObjCStrongCastAssign()
6826 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignStrongCastFn(), in EmitObjCStrongCastAssign()
6831 CodeGen::CodeGenFunction &CGF, in EmitGCMemmoveCollectable() argument
6835 SrcPtr = CGF.Builder.CreateBitCast(SrcPtr, ObjCTypes.Int8PtrTy); in EmitGCMemmoveCollectable()
6836 DestPtr = CGF.Builder.CreateBitCast(DestPtr, ObjCTypes.Int8PtrTy); in EmitGCMemmoveCollectable()
6838 CGF.EmitNounwindRuntimeCall(ObjCTypes.GcMemmoveCollectableFn(), args); in EmitGCMemmoveCollectable()
6845 CodeGen::CodeGenFunction &CGF, in EmitObjCWeakRead() argument
6849 AddrWeakObj = CGF.Builder.CreateBitCast(AddrWeakObj, ObjCTypes.PtrObjectPtrTy); in EmitObjCWeakRead()
6851 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcReadWeakFn(), in EmitObjCWeakRead()
6853 read_weak = CGF.Builder.CreateBitCast(read_weak, DestTy); in EmitObjCWeakRead()
6860 void CGObjCNonFragileABIMac::EmitObjCWeakAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCWeakAssign() argument
6866 src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) in EmitObjCWeakAssign()
6867 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy)); in EmitObjCWeakAssign()
6868 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCWeakAssign()
6870 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCWeakAssign()
6871 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy); in EmitObjCWeakAssign()
6873 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignWeakFn(), in EmitObjCWeakAssign()
6880 void CGObjCNonFragileABIMac::EmitObjCGlobalAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCGlobalAssign() argument
6887 src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) in EmitObjCGlobalAssign()
6888 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy)); in EmitObjCGlobalAssign()
6889 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCGlobalAssign()
6891 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCGlobalAssign()
6892 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy); in EmitObjCGlobalAssign()
6895 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignGlobalFn(), in EmitObjCGlobalAssign()
6898 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignThreadLocalFn(), in EmitObjCGlobalAssign()
6903 CGObjCNonFragileABIMac::EmitSynchronizedStmt(CodeGen::CodeGenFunction &CGF, in EmitSynchronizedStmt() argument
6905 EmitAtSynchronizedStmt(CGF, S, in EmitSynchronizedStmt()
6935 void CGObjCNonFragileABIMac::EmitTryStmt(CodeGen::CodeGenFunction &CGF, in EmitTryStmt() argument
6937 EmitTryCatchStmt(CGF, S, in EmitTryStmt()
6944 void CGObjCNonFragileABIMac::EmitThrowStmt(CodeGen::CodeGenFunction &CGF, in EmitThrowStmt() argument
6948 llvm::Value *Exception = CGF.EmitObjCThrowOperand(ThrowExpr); in EmitThrowStmt()
6949 Exception = CGF.Builder.CreateBitCast(Exception, ObjCTypes.ObjectPtrTy); in EmitThrowStmt()
6950 CGF.EmitRuntimeCallOrInvoke(ObjCTypes.getExceptionThrowFn(), Exception) in EmitThrowStmt()
6953 CGF.EmitRuntimeCallOrInvoke(ObjCTypes.getExceptionRethrowFn()) in EmitThrowStmt()
6957 CGF.Builder.CreateUnreachable(); in EmitThrowStmt()
6959 CGF.Builder.ClearInsertionPoint(); in EmitThrowStmt()