Lines Matching refs:CGF
998 llvm::Value *EmitClassRefViaRuntime(CodeGenFunction &CGF,
1022 CodeGen::RValue EmitMessageSend(CodeGen::CodeGenFunction &CGF,
1098 llvm::Value *EmitClassRef(CodeGenFunction &CGF,
1101 llvm::Value *EmitClassRefFromId(CodeGenFunction &CGF,
1104 llvm::Value *EmitNSAutoreleasePoolClassRef(CodeGenFunction &CGF) override;
1180 llvm::Value *EmitSelector(CodeGenFunction &CGF, Selector Sel);
1181 Address EmitSelectorAddr(CodeGenFunction &CGF, Selector Sel);
1188 CodeGen::RValue GenerateMessageSend(CodeGen::CodeGenFunction &CGF,
1197 GenerateMessageSendSuper(CodeGen::CodeGenFunction &CGF,
1204 llvm::Value *GetClass(CodeGenFunction &CGF,
1207 llvm::Value *GetSelector(CodeGenFunction &CGF, Selector Sel) override;
1208 Address GetAddrOfSelector(CodeGenFunction &CGF, Selector Sel) override;
1212 llvm::Value *GetSelector(CodeGenFunction &CGF,
1223 llvm::Value *GenerateProtocolRef(CodeGenFunction &CGF,
1236 void EmitTryStmt(CodeGen::CodeGenFunction &CGF,
1238 void EmitSynchronizedStmt(CodeGen::CodeGenFunction &CGF,
1240 void EmitTryOrSynchronizedStmt(CodeGen::CodeGenFunction &CGF, const Stmt &S);
1241 void EmitThrowStmt(CodeGen::CodeGenFunction &CGF, const ObjCAtThrowStmt &S,
1243 llvm::Value * EmitObjCWeakRead(CodeGen::CodeGenFunction &CGF,
1245 void EmitObjCWeakAssign(CodeGen::CodeGenFunction &CGF,
1247 void EmitObjCGlobalAssign(CodeGen::CodeGenFunction &CGF,
1250 void EmitObjCIvarAssign(CodeGen::CodeGenFunction &CGF,
1253 void EmitObjCStrongCastAssign(CodeGen::CodeGenFunction &CGF,
1255 void EmitGCMemmoveCollectable(CodeGen::CodeGenFunction &CGF,
1259 LValue EmitObjCValueForIvar(CodeGen::CodeGenFunction &CGF, QualType ObjectTy,
1262 llvm::Value *EmitIvarOffset(CodeGen::CodeGenFunction &CGF,
1356 CodeGen::RValue EmitVTableMessageSend(CodeGen::CodeGenFunction &CGF,
1373 llvm::Value *EmitClassRef(CodeGenFunction &CGF,
1376 llvm::Value *EmitClassRefFromId(CodeGenFunction &CGF,
1380 llvm::Value *EmitNSAutoreleasePoolClassRef(CodeGenFunction &CGF) override;
1384 llvm::Value *EmitSuperClassRef(CodeGenFunction &CGF,
1389 llvm::Value *EmitMetaClassRef(CodeGenFunction &CGF,
1401 llvm::Value *EmitSelector(CodeGenFunction &CGF, Selector Sel);
1402 Address EmitSelectorAddr(CodeGenFunction &CGF, Selector Sel);
1432 bool IsIvarOffsetKnownIdempotent(const CodeGen::CodeGenFunction &CGF, in IsIvarOffsetKnownIdempotent() argument
1445 dyn_cast_or_null<ObjCMethodDecl>(CGF.CurFuncDecl)) in IsIvarOffsetKnownIdempotent()
1457 CodeGen::RValue GenerateMessageSend(CodeGen::CodeGenFunction &CGF,
1466 GenerateMessageSendSuper(CodeGen::CodeGenFunction &CGF,
1473 llvm::Value *GetClass(CodeGenFunction &CGF,
1476 llvm::Value *GetSelector(CodeGenFunction &CGF, Selector Sel) override in GetSelector() argument
1477 { return EmitSelector(CGF, Sel); } in GetSelector()
1478 Address GetAddrOfSelector(CodeGenFunction &CGF, Selector Sel) override in GetAddrOfSelector() argument
1479 { return EmitSelectorAddr(CGF, Sel); } in GetAddrOfSelector()
1483 llvm::Value *GetSelector(CodeGenFunction &CGF, in GetSelector() argument
1485 { return EmitSelector(CGF, Method->getSelector()); } in GetSelector()
1493 llvm::Value *GenerateProtocolRef(CodeGenFunction &CGF,
1530 void EmitTryStmt(CodeGen::CodeGenFunction &CGF,
1532 void EmitSynchronizedStmt(CodeGen::CodeGenFunction &CGF,
1534 void EmitThrowStmt(CodeGen::CodeGenFunction &CGF, const ObjCAtThrowStmt &S,
1536 llvm::Value * EmitObjCWeakRead(CodeGen::CodeGenFunction &CGF,
1538 void EmitObjCWeakAssign(CodeGen::CodeGenFunction &CGF,
1540 void EmitObjCGlobalAssign(CodeGen::CodeGenFunction &CGF,
1543 void EmitObjCIvarAssign(CodeGen::CodeGenFunction &CGF,
1546 void EmitObjCStrongCastAssign(CodeGen::CodeGenFunction &CGF,
1548 void EmitGCMemmoveCollectable(CodeGen::CodeGenFunction &CGF,
1551 LValue EmitObjCValueForIvar(CodeGen::CodeGenFunction &CGF, QualType ObjectTy,
1554 llvm::Value *EmitIvarOffset(CodeGen::CodeGenFunction &CGF,
1566 void init(CodeGenFunction &CGF, llvm::Value *receiver) { in init()
1568 NullBB = CGF.createBasicBlock("msgSend.null-receiver"); in init()
1569 llvm::BasicBlock *callBB = CGF.createBasicBlock("msgSend.call"); in init()
1575 llvm::Value *isNull = CGF.Builder.CreateIsNull(receiver); in init()
1576 CGF.Builder.CreateCondBr(isNull, NullBB, callBB); in init()
1579 CGF.EmitBlock(callBB); in init()
1584 RValue complete(CodeGenFunction &CGF, RValue result, QualType resultType, in complete()
1595 llvm::BasicBlock *callBB = CGF.Builder.GetInsertBlock(); in complete()
1597 contBB = CGF.createBasicBlock("msgSend.cont"); in complete()
1598 CGF.Builder.CreateBr(contBB); in complete()
1602 CGF.EmitBlock(NullBB); in complete()
1614 CGF.EmitARCRelease(RV.getScalarVal(), ARCImpreciseLifetime); in complete()
1620 assert(CGF.Builder.GetInsertBlock() == NullBB); in complete()
1625 if (contBB) CGF.EmitBlock(contBB); in complete()
1632 llvm::Constant *null = CGF.CGM.EmitNullConstant(resultType); in complete()
1638 CGF.EmitBlock(contBB); in complete()
1639 llvm::PHINode *phi = CGF.Builder.CreatePHI(null->getType(), 2); in complete()
1651 CGF.EmitNullInitialization(result.getAggregateAddress(), resultType); in complete()
1652 if (contBB) CGF.EmitBlock(contBB); in complete()
1657 CGF.EmitBlock(contBB); in complete()
1665 llvm::PHINode *real = CGF.Builder.CreatePHI(scalarTy, 2); in complete()
1668 llvm::PHINode *imag = CGF.Builder.CreatePHI(scalarTy, 2); in complete()
1711 llvm::Value *CGObjCMac::GetClass(CodeGenFunction &CGF, in GetClass() argument
1713 return EmitClassRef(CGF, ID); in GetClass()
1717 llvm::Value *CGObjCMac::GetSelector(CodeGenFunction &CGF, Selector Sel) { in GetSelector() argument
1718 return EmitSelector(CGF, Sel); in GetSelector()
1720 Address CGObjCMac::GetAddrOfSelector(CodeGenFunction &CGF, Selector Sel) { in GetAddrOfSelector() argument
1721 return EmitSelectorAddr(CGF, Sel); in GetAddrOfSelector()
1723 llvm::Value *CGObjCMac::GetSelector(CodeGenFunction &CGF, const ObjCMethodDecl in GetSelector() argument
1725 return EmitSelector(CGF, Method->getSelector()); in GetSelector()
1779 CGObjCMac::GenerateMessageSendSuper(CodeGen::CodeGenFunction &CGF, in GenerateMessageSendSuper() argument
1792 CGF.CreateTempAlloca(ObjCTypes.SuperTy, CGF.getPointerAlign(), in GenerateMessageSendSuper()
1795 CGF.Builder.CreateBitCast(Receiver, ObjCTypes.ObjectPtrTy); in GenerateMessageSendSuper()
1796 CGF.Builder.CreateStore( in GenerateMessageSendSuper()
1798 CGF.Builder.CreateStructGEP(ObjCSuper, 0, CharUnits::Zero())); in GenerateMessageSendSuper()
1810 Target = EmitClassRef(CGF, Class->getSuperClass()); in GenerateMessageSendSuper()
1811 Target = CGF.Builder.CreateStructGEP(ObjCTypes.ClassTy, Target, 0); in GenerateMessageSendSuper()
1812 Target = CGF.Builder.CreateAlignedLoad(Target, CGF.getPointerAlign()); in GenerateMessageSendSuper()
1816 CGF.Builder.CreateStructGEP(ObjCTypes.ClassTy, MetaClassPtr, 1); in GenerateMessageSendSuper()
1818 CGF.Builder.CreateAlignedLoad(SuperPtr, CGF.getPointerAlign()); in GenerateMessageSendSuper()
1822 Target = EmitClassRef(CGF, Class->getSuperClass()); in GenerateMessageSendSuper()
1825 ClassPtr = CGF.Builder.CreateStructGEP(ObjCTypes.ClassTy, ClassPtr, 1); in GenerateMessageSendSuper()
1826 Target = CGF.Builder.CreateAlignedLoad(ClassPtr, CGF.getPointerAlign()); in GenerateMessageSendSuper()
1831 CGM.getTypes().ConvertType(CGF.getContext().getObjCClassType()); in GenerateMessageSendSuper()
1832 Target = CGF.Builder.CreateBitCast(Target, ClassTy); in GenerateMessageSendSuper()
1833 CGF.Builder.CreateStore(Target, in GenerateMessageSendSuper()
1834 CGF.Builder.CreateStructGEP(ObjCSuper, 1, CGF.getPointerSize())); in GenerateMessageSendSuper()
1835 return EmitMessageSend(CGF, Return, ResultType, in GenerateMessageSendSuper()
1836 EmitSelector(CGF, Sel), in GenerateMessageSendSuper()
1842 CodeGen::RValue CGObjCMac::GenerateMessageSend(CodeGen::CodeGenFunction &CGF, in GenerateMessageSend() argument
1850 return EmitMessageSend(CGF, Return, ResultType, in GenerateMessageSend()
1851 EmitSelector(CGF, Sel), in GenerateMessageSend()
1852 Receiver, CGF.getContext().getObjCIdType(), in GenerateMessageSend()
1866 CGObjCCommonMac::EmitMessageSend(CodeGen::CodeGenFunction &CGF, in EmitMessageSend() argument
1879 Arg0 = CGF.Builder.CreateBitCast(Arg0, ObjCTypes.ObjectPtrTy); in EmitMessageSend()
1881 ActualArgs.add(RValue::get(Sel), CGF.getContext().getObjCSelType()); in EmitMessageSend()
1907 dyn_cast_or_null<ObjCMethodDecl>(CGF.CurCodeDecl)) { in EmitMessageSend()
1911 llvm::Value *SelfAddr = CGF.GetAddrOfLocalVar(Self).getPointer(); in EmitMessageSend()
1923 if (ReceiverCanBeNull) nullReturn.init(CGF, Arg0); in EmitMessageSend()
1936 nullReturn.init(CGF, Arg0); in EmitMessageSend()
1947 nullReturn.init(CGF, Arg0); in EmitMessageSend()
1956 RValue rvalue = CGF.EmitCall(MSI.CallInfo, Fn, Return, ActualArgs, in EmitMessageSend()
1965 return nullReturn.complete(CGF, rvalue, ResultType, CallArgs, in EmitMessageSend()
2657 llvm::Value *CGObjCMac::GenerateProtocolRef(CodeGenFunction &CGF, in GenerateProtocolRef() argument
2687 CodeGenFunction &CGF, in EmitClassRefViaRuntime() argument
2693 CGF.CGM.GetAddrOfConstantCString(ID->getObjCRuntimeNameAsString()) in EmitClassRefViaRuntime()
2695 ASTContext &ctx = CGF.CGM.getContext(); in EmitClassRefViaRuntime()
2697 CGF.Builder.CreateBitCast(className, in EmitClassRefViaRuntime()
2698 CGF.ConvertType( in EmitClassRefViaRuntime()
2700 llvm::CallInst *call = CGF.Builder.CreateCall(lookUpClassFn, className); in EmitClassRefViaRuntime()
3692 void CGObjCMac::EmitTryStmt(CodeGenFunction &CGF, const ObjCAtTryStmt &S) { in EmitTryStmt() argument
3693 return EmitTryOrSynchronizedStmt(CGF, S); in EmitTryStmt()
3696 void CGObjCMac::EmitSynchronizedStmt(CodeGenFunction &CGF, in EmitSynchronizedStmt() argument
3698 return EmitTryOrSynchronizedStmt(CGF, S); in EmitSynchronizedStmt()
3716 void Emit(CodeGenFunction &CGF, Flags flags) override { in Emit()
3720 CGF.createBasicBlock("finally.call_exit"); in Emit()
3722 CGF.createBasicBlock("finally.no_call_exit"); in Emit()
3723 CGF.Builder.CreateCondBr(CGF.Builder.CreateLoad(CallTryExitVar), in Emit()
3726 CGF.EmitBlock(FinallyCallExit); in Emit()
3727 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionTryExitFn(), in Emit()
3730 CGF.EmitBlock(FinallyNoCallExit); in Emit()
3741 CGF.Builder.CreateLoad(CGF.getNormalCleanupDestSlot()); in Emit()
3743 CGF.EmitStmt(FinallyStmt->getFinallyBody()); in Emit()
3745 if (CGF.HaveInsertPoint()) { in Emit()
3746 CGF.Builder.CreateStore(CurCleanupDest, in Emit()
3747 CGF.getNormalCleanupDestSlot()); in Emit()
3750 CGF.EnsureInsertPoint(); in Emit()
3756 llvm::Value *SyncArg = CGF.Builder.CreateLoad(SyncArgSlot); in Emit()
3757 CGF.EmitNounwindRuntimeCall(ObjCTypes.getSyncExitFn(), SyncArg); in Emit()
3763 CodeGenFunction &CGF; member in __anonc21a86420511::FragileHazards
3776 FragileHazards(CodeGenFunction &CGF);
3788 FragileHazards::FragileHazards(CodeGenFunction &CGF) : CGF(CGF) { in FragileHazards() argument
3795 I = CGF.CurFn->begin(), E = CGF.CurFn->end(); I != E; ++I) in FragileHazards()
3834 CGF.EmitNounwindRuntimeCall(WriteHazard, Locals); in emitWriteHazard()
3841 call->setCallingConv(CGF.getRuntimeCC()); in emitReadHazard()
3849 CGBuilderTy Builder(CGF, CGF.getLLVMContext()); in emitHazardsInNewBlocks()
3853 FI = CGF.CurFn->begin(), FE = CGF.CurFn->end(); FI != FE; ++FI) { in emitHazardsInNewBlocks()
3895 addIfPresent(AllocasToIgnore, CGF.ReturnValue); in collectLocals()
3896 addIfPresent(AllocasToIgnore, CGF.NormalCleanupDest); in collectLocals()
3900 llvm::BasicBlock &Entry = CGF.CurFn->getEntryBlock(); in collectLocals()
3911 return llvm::FunctionType::get(CGF.VoidTy, tys, false); in GetAsmFnType()
4026 void CGObjCMac::EmitTryOrSynchronizedStmt(CodeGen::CodeGenFunction &CGF, in EmitTryOrSynchronizedStmt() argument
4033 CGF.getJumpDestInCurrentScope("finally.end"); in EmitTryOrSynchronizedStmt()
4038 CGF.getJumpDestInCurrentScope("finally.rethrow"); in EmitTryOrSynchronizedStmt()
4048 CGF.EmitScalarExpr(cast<ObjCAtSynchronizedStmt>(S).getSynchExpr()); in EmitTryOrSynchronizedStmt()
4049 SyncArg = CGF.Builder.CreateBitCast(SyncArg, ObjCTypes.ObjectPtrTy); in EmitTryOrSynchronizedStmt()
4050 CGF.EmitNounwindRuntimeCall(ObjCTypes.getSyncEnterFn(), SyncArg); in EmitTryOrSynchronizedStmt()
4052 SyncArgSlot = CGF.CreateTempAlloca(SyncArg->getType(), in EmitTryOrSynchronizedStmt()
4053 CGF.getPointerAlign(), "sync.arg"); in EmitTryOrSynchronizedStmt()
4054 CGF.Builder.CreateStore(SyncArg, SyncArgSlot); in EmitTryOrSynchronizedStmt()
4059 Address ExceptionData = CGF.CreateTempAlloca(ObjCTypes.ExceptionDataTy, in EmitTryOrSynchronizedStmt()
4060 CGF.getPointerAlign(), in EmitTryOrSynchronizedStmt()
4067 FragileHazards Hazards(CGF); in EmitTryOrSynchronizedStmt()
4077 Address CallTryExitVar = CGF.CreateTempAlloca(CGF.Builder.getInt1Ty(), in EmitTryOrSynchronizedStmt()
4086 CGF.EHStack.pushCleanup<PerformFragileFinally>(NormalAndEHCleanup, &S, in EmitTryOrSynchronizedStmt()
4095 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionTryEnterFn(), in EmitTryOrSynchronizedStmt()
4099 llvm::Constant *Zero = llvm::ConstantInt::get(CGF.Builder.getInt32Ty(), 0); in EmitTryOrSynchronizedStmt()
4101 llvm::Value *SetJmpBuffer = CGF.Builder.CreateGEP( in EmitTryOrSynchronizedStmt()
4104 llvm::CallInst *SetJmpResult = CGF.EmitNounwindRuntimeCall( in EmitTryOrSynchronizedStmt()
4110 llvm::BasicBlock *TryBlock = CGF.createBasicBlock("try"); in EmitTryOrSynchronizedStmt()
4111 llvm::BasicBlock *TryHandler = CGF.createBasicBlock("try.handler"); in EmitTryOrSynchronizedStmt()
4113 CGF.Builder.CreateIsNotNull(SetJmpResult, "did_catch_exception"); in EmitTryOrSynchronizedStmt()
4114 CGF.Builder.CreateCondBr(DidCatch, TryHandler, TryBlock); in EmitTryOrSynchronizedStmt()
4117 CGF.EmitBlock(TryBlock); in EmitTryOrSynchronizedStmt()
4118 CGF.Builder.CreateStore(CGF.Builder.getTrue(), CallTryExitVar); in EmitTryOrSynchronizedStmt()
4119 CGF.EmitStmt(isTry ? cast<ObjCAtTryStmt>(S).getTryBody() in EmitTryOrSynchronizedStmt()
4122 CGBuilderTy::InsertPoint TryFallthroughIP = CGF.Builder.saveAndClearIP(); in EmitTryOrSynchronizedStmt()
4125 CGF.EmitBlock(TryHandler); in EmitTryOrSynchronizedStmt()
4134 CGF.Builder.CreateStore(CGF.Builder.getFalse(), CallTryExitVar); in EmitTryOrSynchronizedStmt()
4135 CGF.EmitBranchThroughCleanup(FinallyRethrow); in EmitTryOrSynchronizedStmt()
4142 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionExtractFn(), in EmitTryOrSynchronizedStmt()
4147 CGF.ObjCEHValueStack.push_back(Caught); in EmitTryOrSynchronizedStmt()
4158 PropagatingExnVar = CGF.CreateTempAlloca(Caught->getType(), in EmitTryOrSynchronizedStmt()
4159 CGF.getPointerAlign(), in EmitTryOrSynchronizedStmt()
4161 CGF.Builder.CreateStore(Caught, PropagatingExnVar); in EmitTryOrSynchronizedStmt()
4165 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionTryEnterFn(), in EmitTryOrSynchronizedStmt()
4169 CGF.EmitNounwindRuntimeCall(ObjCTypes.getSetJmpFn(), in EmitTryOrSynchronizedStmt()
4174 CGF.Builder.CreateIsNotNull(SetJmpResult, "did_catch_exception"); in EmitTryOrSynchronizedStmt()
4176 CatchBlock = CGF.createBasicBlock("catch"); in EmitTryOrSynchronizedStmt()
4177 CatchHandler = CGF.createBasicBlock("catch_for_catch"); in EmitTryOrSynchronizedStmt()
4178 CGF.Builder.CreateCondBr(Threw, CatchHandler, CatchBlock); in EmitTryOrSynchronizedStmt()
4180 CGF.EmitBlock(CatchBlock); in EmitTryOrSynchronizedStmt()
4183 CGF.Builder.CreateStore(CGF.Builder.getInt1(HasFinally), CallTryExitVar); in EmitTryOrSynchronizedStmt()
4211 CodeGenFunction::RunCleanupsScope CatchVarCleanups(CGF); in EmitTryOrSynchronizedStmt()
4214 CGF.EmitAutoVarDecl(*CatchParam); in EmitTryOrSynchronizedStmt()
4215 assert(CGF.HaveInsertPoint() && "DeclStmt destroyed insert point?"); in EmitTryOrSynchronizedStmt()
4218 EmitInitOfCatchParam(CGF, Caught, CatchParam); in EmitTryOrSynchronizedStmt()
4221 CGF.EmitStmt(CatchStmt->getCatchBody()); in EmitTryOrSynchronizedStmt()
4226 CGF.EmitBranchThroughCleanup(FinallyEnd); in EmitTryOrSynchronizedStmt()
4238 llvm::Value *Class = EmitClassRef(CGF, IDecl); in EmitTryOrSynchronizedStmt()
4242 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionMatchFn(), in EmitTryOrSynchronizedStmt()
4245 llvm::BasicBlock *MatchedBlock = CGF.createBasicBlock("match"); in EmitTryOrSynchronizedStmt()
4246 llvm::BasicBlock *NextCatchBlock = CGF.createBasicBlock("catch.next"); in EmitTryOrSynchronizedStmt()
4248 CGF.Builder.CreateCondBr(CGF.Builder.CreateIsNotNull(Match, "matched"), in EmitTryOrSynchronizedStmt()
4252 CGF.EmitBlock(MatchedBlock); in EmitTryOrSynchronizedStmt()
4256 CodeGenFunction::RunCleanupsScope CatchVarCleanups(CGF); in EmitTryOrSynchronizedStmt()
4258 CGF.EmitAutoVarDecl(*CatchParam); in EmitTryOrSynchronizedStmt()
4259 assert(CGF.HaveInsertPoint() && "DeclStmt destroyed insert point?"); in EmitTryOrSynchronizedStmt()
4263 CGF.Builder.CreateBitCast(Caught, in EmitTryOrSynchronizedStmt()
4264 CGF.ConvertType(CatchParam->getType())); in EmitTryOrSynchronizedStmt()
4265 EmitInitOfCatchParam(CGF, Tmp, CatchParam); in EmitTryOrSynchronizedStmt()
4267 CGF.EmitStmt(CatchStmt->getCatchBody()); in EmitTryOrSynchronizedStmt()
4272 CGF.EmitBranchThroughCleanup(FinallyEnd); in EmitTryOrSynchronizedStmt()
4274 CGF.EmitBlock(NextCatchBlock); in EmitTryOrSynchronizedStmt()
4277 CGF.ObjCEHValueStack.pop_back(); in EmitTryOrSynchronizedStmt()
4285 CGF.EmitBranchThroughCleanup(FinallyRethrow); in EmitTryOrSynchronizedStmt()
4289 CGF.EmitBlock(CatchHandler); in EmitTryOrSynchronizedStmt()
4300 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionExtractFn(), in EmitTryOrSynchronizedStmt()
4302 CGF.Builder.CreateStore(NewCaught, PropagatingExnVar); in EmitTryOrSynchronizedStmt()
4305 CGF.Builder.CreateStore(CGF.Builder.getFalse(), CallTryExitVar); in EmitTryOrSynchronizedStmt()
4306 CGF.EmitBranchThroughCleanup(FinallyRethrow); in EmitTryOrSynchronizedStmt()
4314 CGF.Builder.restoreIP(TryFallthroughIP); in EmitTryOrSynchronizedStmt()
4315 if (CGF.HaveInsertPoint()) in EmitTryOrSynchronizedStmt()
4316 CGF.Builder.CreateStore(CGF.Builder.getTrue(), CallTryExitVar); in EmitTryOrSynchronizedStmt()
4317 CGF.PopCleanupBlock(); in EmitTryOrSynchronizedStmt()
4318 CGF.EmitBlock(FinallyEnd.getBlock(), true); in EmitTryOrSynchronizedStmt()
4321 CGBuilderTy::InsertPoint SavedIP = CGF.Builder.saveAndClearIP(); in EmitTryOrSynchronizedStmt()
4322 CGF.EmitBlock(FinallyRethrow.getBlock(), true); in EmitTryOrSynchronizedStmt()
4323 if (CGF.HaveInsertPoint()) { in EmitTryOrSynchronizedStmt()
4327 PropagatingExn = CGF.Builder.CreateLoad(PropagatingExnVar); in EmitTryOrSynchronizedStmt()
4332 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionExtractFn(), in EmitTryOrSynchronizedStmt()
4337 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionThrowFn(), in EmitTryOrSynchronizedStmt()
4339 CGF.Builder.CreateUnreachable(); in EmitTryOrSynchronizedStmt()
4342 CGF.Builder.restoreIP(SavedIP); in EmitTryOrSynchronizedStmt()
4345 void CGObjCMac::EmitThrowStmt(CodeGen::CodeGenFunction &CGF, in EmitThrowStmt() argument
4351 llvm::Value *Exception = CGF.EmitObjCThrowOperand(ThrowExpr); in EmitThrowStmt()
4353 CGF.Builder.CreateBitCast(Exception, ObjCTypes.ObjectPtrTy); in EmitThrowStmt()
4355 assert((!CGF.ObjCEHValueStack.empty() && CGF.ObjCEHValueStack.back()) && in EmitThrowStmt()
4357 ExceptionAsObject = CGF.ObjCEHValueStack.back(); in EmitThrowStmt()
4360 CGF.EmitRuntimeCall(ObjCTypes.getExceptionThrowFn(), ExceptionAsObject) in EmitThrowStmt()
4362 CGF.Builder.CreateUnreachable(); in EmitThrowStmt()
4366 CGF.Builder.ClearInsertionPoint(); in EmitThrowStmt()
4372 llvm::Value * CGObjCMac::EmitObjCWeakRead(CodeGen::CodeGenFunction &CGF, in EmitObjCWeakRead() argument
4375 AddrWeakObj = CGF.Builder.CreateBitCast(AddrWeakObj, in EmitObjCWeakRead()
4378 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcReadWeakFn(), in EmitObjCWeakRead()
4380 read_weak = CGF.Builder.CreateBitCast(read_weak, DestTy); in EmitObjCWeakRead()
4387 void CGObjCMac::EmitObjCWeakAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCWeakAssign() argument
4393 src = (Size == 4) ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) in EmitObjCWeakAssign()
4394 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongLongTy); in EmitObjCWeakAssign()
4395 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCWeakAssign()
4397 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCWeakAssign()
4398 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy); in EmitObjCWeakAssign()
4400 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignWeakFn(), in EmitObjCWeakAssign()
4407 void CGObjCMac::EmitObjCGlobalAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCGlobalAssign() argument
4414 src = (Size == 4) ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) in EmitObjCGlobalAssign()
4415 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongLongTy); in EmitObjCGlobalAssign()
4416 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCGlobalAssign()
4418 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCGlobalAssign()
4419 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy); in EmitObjCGlobalAssign()
4422 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignGlobalFn(), in EmitObjCGlobalAssign()
4425 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignThreadLocalFn(), in EmitObjCGlobalAssign()
4432 void CGObjCMac::EmitObjCIvarAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCIvarAssign() argument
4440 src = (Size == 4) ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) in EmitObjCIvarAssign()
4441 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongLongTy); in EmitObjCIvarAssign()
4442 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCIvarAssign()
4444 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCIvarAssign()
4445 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy); in EmitObjCIvarAssign()
4447 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignIvarFn(), args); in EmitObjCIvarAssign()
4453 void CGObjCMac::EmitObjCStrongCastAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCStrongCastAssign() argument
4459 src = (Size == 4) ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) in EmitObjCStrongCastAssign()
4460 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongLongTy); in EmitObjCStrongCastAssign()
4461 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCStrongCastAssign()
4463 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCStrongCastAssign()
4464 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy); in EmitObjCStrongCastAssign()
4466 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignStrongCastFn(), in EmitObjCStrongCastAssign()
4470 void CGObjCMac::EmitGCMemmoveCollectable(CodeGen::CodeGenFunction &CGF, in EmitGCMemmoveCollectable() argument
4474 SrcPtr = CGF.Builder.CreateBitCast(SrcPtr, ObjCTypes.Int8PtrTy); in EmitGCMemmoveCollectable()
4475 DestPtr = CGF.Builder.CreateBitCast(DestPtr, ObjCTypes.Int8PtrTy); in EmitGCMemmoveCollectable()
4477 CGF.EmitNounwindRuntimeCall(ObjCTypes.GcMemmoveCollectableFn(), args); in EmitGCMemmoveCollectable()
4482 LValue CGObjCMac::EmitObjCValueForIvar(CodeGen::CodeGenFunction &CGF, in EmitObjCValueForIvar() argument
4489 return EmitValueForIvarAtOffset(CGF, ID, BaseValue, Ivar, CVRQualifiers, in EmitObjCValueForIvar()
4490 EmitIvarOffset(CGF, ID, Ivar)); in EmitObjCValueForIvar()
4493 llvm::Value *CGObjCMac::EmitIvarOffset(CodeGen::CodeGenFunction &CGF, in EmitIvarOffset() argument
4652 llvm::Value *CGObjCMac::EmitClassRefFromId(CodeGenFunction &CGF, in EmitClassRefFromId() argument
4668 return CGF.Builder.CreateAlignedLoad(Entry, CGF.getPointerAlign()); in EmitClassRefFromId()
4671 llvm::Value *CGObjCMac::EmitClassRef(CodeGenFunction &CGF, in EmitClassRef() argument
4676 return EmitClassRefViaRuntime(CGF, ID, ObjCTypes); in EmitClassRef()
4678 return EmitClassRefFromId(CGF, ID->getIdentifier()); in EmitClassRef()
4681 llvm::Value *CGObjCMac::EmitNSAutoreleasePoolClassRef(CodeGenFunction &CGF) { in EmitNSAutoreleasePoolClassRef() argument
4683 return EmitClassRefFromId(CGF, II); in EmitNSAutoreleasePoolClassRef()
4686 llvm::Value *CGObjCMac::EmitSelector(CodeGenFunction &CGF, Selector Sel) { in EmitSelector() argument
4687 return CGF.Builder.CreateLoad(EmitSelectorAddr(CGF, Sel)); in EmitSelector()
4690 Address CGObjCMac::EmitSelectorAddr(CodeGenFunction &CGF, Selector Sel) { in EmitSelectorAddr() argument
4691 CharUnits Align = CGF.getPointerAlign(); in EmitSelectorAddr()
6125 llvm::Value *CGObjCNonFragileABIMac::GenerateProtocolRef(CodeGenFunction &CGF, in GenerateProtocolRef() argument
6138 CharUnits Align = CGF.getPointerAlign(); in GenerateProtocolRef()
6142 return CGF.Builder.CreateAlignedLoad(PTGV, Align); in GenerateProtocolRef()
6153 return CGF.Builder.CreateAlignedLoad(PTGV, Align); in GenerateProtocolRef()
6676 CodeGen::CodeGenFunction &CGF, in EmitObjCValueForIvar() argument
6682 llvm::Value *Offset = EmitIvarOffset(CGF, ID, Ivar); in EmitObjCValueForIvar()
6683 return EmitValueForIvarAtOffset(CGF, ID, BaseValue, Ivar, CVRQualifiers, in EmitObjCValueForIvar()
6688 CodeGen::CodeGenFunction &CGF, in EmitIvarOffset() argument
6692 IvarOffsetValue = CGF.Builder.CreateAlignedLoad(IvarOffsetValue, in EmitIvarOffset()
6693 CGF.getSizeAlign(), "ivar"); in EmitIvarOffset()
6694 if (IsIvarOffsetKnownIdempotent(CGF, Ivar)) in EmitIvarOffset()
6703 IvarOffsetValue = CGF.Builder.CreateIntCast( in EmitIvarOffset()
6732 CGObjCNonFragileABIMac::EmitVTableMessageSend(CodeGenFunction &CGF, in EmitVTableMessageSend() argument
6746 arg0 = CGF.Builder.CreateBitCast(arg0, ObjCTypes.ObjectPtrTy); in EmitVTableMessageSend()
6773 nullReturn.init(CGF, arg0); in EmitVTableMessageSend()
6818 nullReturn.init(CGF, arg0); in EmitVTableMessageSend()
6825 Address(CGF.Builder.CreateBitCast(messageRef, ObjCTypes.MessageRefPtrTy), in EmitVTableMessageSend()
6826 CGF.getPointerAlign()); in EmitVTableMessageSend()
6833 CGF.Builder.CreateStructGEP(mref, 0, CharUnits::Zero()); in EmitVTableMessageSend()
6834 llvm::Value *callee = CGF.Builder.CreateLoad(calleeAddr, "msgSend_fn"); in EmitVTableMessageSend()
6836 callee = CGF.Builder.CreateBitCast(callee, MSI.MessengerType); in EmitVTableMessageSend()
6838 RValue result = CGF.EmitCall(MSI.CallInfo, callee, returnSlot, args); in EmitVTableMessageSend()
6839 return nullReturn.complete(CGF, result, resultType, formalArgs, in EmitVTableMessageSend()
6845 CGObjCNonFragileABIMac::GenerateMessageSend(CodeGen::CodeGenFunction &CGF, in GenerateMessageSend() argument
6854 ? EmitVTableMessageSend(CGF, Return, ResultType, Sel, in GenerateMessageSend()
6855 Receiver, CGF.getContext().getObjCIdType(), in GenerateMessageSend()
6857 : EmitMessageSend(CGF, Return, ResultType, in GenerateMessageSend()
6858 EmitSelector(CGF, Sel), in GenerateMessageSend()
6859 Receiver, CGF.getContext().getObjCIdType(), in GenerateMessageSend()
6879 llvm::Value *CGObjCNonFragileABIMac::EmitClassRefFromId(CodeGenFunction &CGF, in EmitClassRefFromId() argument
6883 CharUnits Align = CGF.getPointerAlign(); in EmitClassRefFromId()
6897 return CGF.Builder.CreateAlignedLoad(Entry, Align); in EmitClassRefFromId()
6900 llvm::Value *CGObjCNonFragileABIMac::EmitClassRef(CodeGenFunction &CGF, in EmitClassRef() argument
6905 return EmitClassRefViaRuntime(CGF, ID, ObjCTypes); in EmitClassRef()
6907 return EmitClassRefFromId(CGF, ID->getIdentifier(), ID->isWeakImported(), ID); in EmitClassRef()
6911 CodeGenFunction &CGF) { in EmitNSAutoreleasePoolClassRef() argument
6913 return EmitClassRefFromId(CGF, II, false, nullptr); in EmitNSAutoreleasePoolClassRef()
6917 CGObjCNonFragileABIMac::EmitSuperClassRef(CodeGenFunction &CGF, in EmitSuperClassRef() argument
6919 CharUnits Align = CGF.getPointerAlign(); in EmitSuperClassRef()
6934 return CGF.Builder.CreateAlignedLoad(Entry, Align); in EmitSuperClassRef()
6940 llvm::Value *CGObjCNonFragileABIMac::EmitMetaClassRef(CodeGenFunction &CGF, in EmitMetaClassRef() argument
6943 CharUnits Align = CGF.getPointerAlign(); in EmitMetaClassRef()
6960 return CGF.Builder.CreateAlignedLoad(Entry, Align); in EmitMetaClassRef()
6965 llvm::Value *CGObjCNonFragileABIMac::GetClass(CodeGenFunction &CGF, in GetClass() argument
6975 return EmitClassRef(CGF, ID); in GetClass()
6982 CGObjCNonFragileABIMac::GenerateMessageSendSuper(CodeGen::CodeGenFunction &CGF, in GenerateMessageSendSuper() argument
6996 CGF.CreateTempAlloca(ObjCTypes.SuperTy, CGF.getPointerAlign(), in GenerateMessageSendSuper()
7000 CGF.Builder.CreateBitCast(Receiver, ObjCTypes.ObjectPtrTy); in GenerateMessageSendSuper()
7001 CGF.Builder.CreateStore( in GenerateMessageSendSuper()
7003 CGF.Builder.CreateStructGEP(ObjCSuper, 0, CharUnits::Zero())); in GenerateMessageSendSuper()
7008 Target = EmitMetaClassRef(CGF, Class, Class->isWeakImported()); in GenerateMessageSendSuper()
7010 Target = EmitSuperClassRef(CGF, Class); in GenerateMessageSendSuper()
7015 CGM.getTypes().ConvertType(CGF.getContext().getObjCClassType()); in GenerateMessageSendSuper()
7016 Target = CGF.Builder.CreateBitCast(Target, ClassTy); in GenerateMessageSendSuper()
7017 CGF.Builder.CreateStore( in GenerateMessageSendSuper()
7018 Target, CGF.Builder.CreateStructGEP(ObjCSuper, 1, CGF.getPointerSize())); in GenerateMessageSendSuper()
7021 ? EmitVTableMessageSend(CGF, Return, ResultType, Sel, in GenerateMessageSendSuper()
7024 : EmitMessageSend(CGF, Return, ResultType, in GenerateMessageSendSuper()
7025 EmitSelector(CGF, Sel), in GenerateMessageSendSuper()
7030 llvm::Value *CGObjCNonFragileABIMac::EmitSelector(CodeGenFunction &CGF, in EmitSelector() argument
7032 Address Addr = EmitSelectorAddr(CGF, Sel); in EmitSelector()
7034 llvm::LoadInst* LI = CGF.Builder.CreateLoad(Addr); in EmitSelector()
7040 Address CGObjCNonFragileABIMac::EmitSelectorAddr(CodeGenFunction &CGF, in EmitSelectorAddr() argument
7044 CharUnits Align = CGF.getPointerAlign(); in EmitSelectorAddr()
7064 void CGObjCNonFragileABIMac::EmitObjCIvarAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCIvarAssign() argument
7072 src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) in EmitObjCIvarAssign()
7073 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy)); in EmitObjCIvarAssign()
7074 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCIvarAssign()
7076 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCIvarAssign()
7077 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy); in EmitObjCIvarAssign()
7079 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignIvarFn(), args); in EmitObjCIvarAssign()
7086 CodeGen::CodeGenFunction &CGF, in EmitObjCStrongCastAssign() argument
7092 src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) in EmitObjCStrongCastAssign()
7093 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy)); in EmitObjCStrongCastAssign()
7094 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCStrongCastAssign()
7096 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCStrongCastAssign()
7097 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy); in EmitObjCStrongCastAssign()
7099 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignStrongCastFn(), in EmitObjCStrongCastAssign()
7104 CodeGen::CodeGenFunction &CGF, in EmitGCMemmoveCollectable() argument
7108 SrcPtr = CGF.Builder.CreateBitCast(SrcPtr, ObjCTypes.Int8PtrTy); in EmitGCMemmoveCollectable()
7109 DestPtr = CGF.Builder.CreateBitCast(DestPtr, ObjCTypes.Int8PtrTy); in EmitGCMemmoveCollectable()
7111 CGF.EmitNounwindRuntimeCall(ObjCTypes.GcMemmoveCollectableFn(), args); in EmitGCMemmoveCollectable()
7118 CodeGen::CodeGenFunction &CGF, in EmitObjCWeakRead() argument
7121 AddrWeakObj = CGF.Builder.CreateBitCast(AddrWeakObj, ObjCTypes.PtrObjectPtrTy); in EmitObjCWeakRead()
7123 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcReadWeakFn(), in EmitObjCWeakRead()
7125 read_weak = CGF.Builder.CreateBitCast(read_weak, DestTy); in EmitObjCWeakRead()
7132 void CGObjCNonFragileABIMac::EmitObjCWeakAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCWeakAssign() argument
7138 src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) in EmitObjCWeakAssign()
7139 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy)); in EmitObjCWeakAssign()
7140 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCWeakAssign()
7142 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCWeakAssign()
7143 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy); in EmitObjCWeakAssign()
7145 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignWeakFn(), in EmitObjCWeakAssign()
7152 void CGObjCNonFragileABIMac::EmitObjCGlobalAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCGlobalAssign() argument
7159 src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) in EmitObjCGlobalAssign()
7160 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy)); in EmitObjCGlobalAssign()
7161 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCGlobalAssign()
7163 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCGlobalAssign()
7164 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy); in EmitObjCGlobalAssign()
7167 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignGlobalFn(), in EmitObjCGlobalAssign()
7170 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignThreadLocalFn(), in EmitObjCGlobalAssign()
7175 CGObjCNonFragileABIMac::EmitSynchronizedStmt(CodeGen::CodeGenFunction &CGF, in EmitSynchronizedStmt() argument
7177 EmitAtSynchronizedStmt(CGF, S, in EmitSynchronizedStmt()
7207 void CGObjCNonFragileABIMac::EmitTryStmt(CodeGen::CodeGenFunction &CGF, in EmitTryStmt() argument
7209 EmitTryCatchStmt(CGF, S, in EmitTryStmt()
7216 void CGObjCNonFragileABIMac::EmitThrowStmt(CodeGen::CodeGenFunction &CGF, in EmitThrowStmt() argument
7220 llvm::Value *Exception = CGF.EmitObjCThrowOperand(ThrowExpr); in EmitThrowStmt()
7221 Exception = CGF.Builder.CreateBitCast(Exception, ObjCTypes.ObjectPtrTy); in EmitThrowStmt()
7222 CGF.EmitRuntimeCallOrInvoke(ObjCTypes.getExceptionThrowFn(), Exception) in EmitThrowStmt()
7225 CGF.EmitRuntimeCallOrInvoke(ObjCTypes.getExceptionRethrowFn()) in EmitThrowStmt()
7229 CGF.Builder.CreateUnreachable(); in EmitThrowStmt()
7231 CGF.Builder.ClearInsertionPoint(); in EmitThrowStmt()