Lines Matching refs:CGF

1004   llvm::Value *EmitClassRefViaRuntime(CodeGenFunction &CGF,
1040 CodeGen::RValue EmitMessageSend(CodeGen::CodeGenFunction &CGF,
1212 llvm::Value *EmitClassRef(CodeGenFunction &CGF,
1215 llvm::Value *EmitClassRefFromId(CodeGenFunction &CGF,
1218 llvm::Value *EmitNSAutoreleasePoolClassRef(CodeGenFunction &CGF) override;
1280 llvm::Value *EmitSelector(CodeGenFunction &CGF, Selector Sel);
1281 Address EmitSelectorAddr(CodeGenFunction &CGF, Selector Sel);
1290 CodeGen::RValue GenerateMessageSend(CodeGen::CodeGenFunction &CGF,
1299 GenerateMessageSendSuper(CodeGen::CodeGenFunction &CGF,
1306 llvm::Value *GetClass(CodeGenFunction &CGF,
1309 llvm::Value *GetSelector(CodeGenFunction &CGF, Selector Sel) override;
1310 Address GetAddrOfSelector(CodeGenFunction &CGF, Selector Sel) override;
1314 llvm::Value *GetSelector(CodeGenFunction &CGF,
1325 llvm::Value *GenerateProtocolRef(CodeGenFunction &CGF,
1338 void EmitTryStmt(CodeGen::CodeGenFunction &CGF,
1340 void EmitSynchronizedStmt(CodeGen::CodeGenFunction &CGF,
1342 void EmitTryOrSynchronizedStmt(CodeGen::CodeGenFunction &CGF, const Stmt &S);
1343 void EmitThrowStmt(CodeGen::CodeGenFunction &CGF, const ObjCAtThrowStmt &S,
1345 llvm::Value * EmitObjCWeakRead(CodeGen::CodeGenFunction &CGF,
1347 void EmitObjCWeakAssign(CodeGen::CodeGenFunction &CGF,
1349 void EmitObjCGlobalAssign(CodeGen::CodeGenFunction &CGF,
1352 void EmitObjCIvarAssign(CodeGen::CodeGenFunction &CGF,
1355 void EmitObjCStrongCastAssign(CodeGen::CodeGenFunction &CGF,
1357 void EmitGCMemmoveCollectable(CodeGen::CodeGenFunction &CGF,
1361 LValue EmitObjCValueForIvar(CodeGen::CodeGenFunction &CGF, QualType ObjectTy,
1364 llvm::Value *EmitIvarOffset(CodeGen::CodeGenFunction &CGF,
1453 CodeGen::RValue EmitVTableMessageSend(CodeGen::CodeGenFunction &CGF,
1474 llvm::Value *EmitClassRef(CodeGenFunction &CGF,
1477 llvm::Value *EmitClassRefFromId(CodeGenFunction &CGF,
1481 llvm::Value *EmitNSAutoreleasePoolClassRef(CodeGenFunction &CGF) override;
1485 llvm::Value *EmitSuperClassRef(CodeGenFunction &CGF,
1490 llvm::Value *EmitMetaClassRef(CodeGenFunction &CGF,
1502 llvm::Value *EmitSelector(CodeGenFunction &CGF, Selector Sel);
1503 Address EmitSelectorAddr(CodeGenFunction &CGF, Selector Sel);
1533 bool IsIvarOffsetKnownIdempotent(const CodeGen::CodeGenFunction &CGF, in IsIvarOffsetKnownIdempotent() argument
1546 dyn_cast_or_null<ObjCMethodDecl>(CGF.CurFuncDecl)) in IsIvarOffsetKnownIdempotent()
1560 CodeGen::RValue GenerateMessageSend(CodeGen::CodeGenFunction &CGF,
1569 GenerateMessageSendSuper(CodeGen::CodeGenFunction &CGF,
1576 llvm::Value *GetClass(CodeGenFunction &CGF,
1579 llvm::Value *GetSelector(CodeGenFunction &CGF, Selector Sel) override in GetSelector() argument
1580 { return EmitSelector(CGF, Sel); } in GetSelector()
1581 Address GetAddrOfSelector(CodeGenFunction &CGF, Selector Sel) override in GetAddrOfSelector() argument
1582 { return EmitSelectorAddr(CGF, Sel); } in GetAddrOfSelector()
1586 llvm::Value *GetSelector(CodeGenFunction &CGF, in GetSelector() argument
1588 { return EmitSelector(CGF, Method->getSelector()); } in GetSelector()
1596 llvm::Value *GenerateProtocolRef(CodeGenFunction &CGF,
1633 void EmitTryStmt(CodeGen::CodeGenFunction &CGF,
1635 void EmitSynchronizedStmt(CodeGen::CodeGenFunction &CGF,
1637 void EmitThrowStmt(CodeGen::CodeGenFunction &CGF, const ObjCAtThrowStmt &S,
1639 llvm::Value * EmitObjCWeakRead(CodeGen::CodeGenFunction &CGF,
1641 void EmitObjCWeakAssign(CodeGen::CodeGenFunction &CGF,
1643 void EmitObjCGlobalAssign(CodeGen::CodeGenFunction &CGF,
1646 void EmitObjCIvarAssign(CodeGen::CodeGenFunction &CGF,
1649 void EmitObjCStrongCastAssign(CodeGen::CodeGenFunction &CGF,
1651 void EmitGCMemmoveCollectable(CodeGen::CodeGenFunction &CGF,
1654 LValue EmitObjCValueForIvar(CodeGen::CodeGenFunction &CGF, QualType ObjectTy,
1657 llvm::Value *EmitIvarOffset(CodeGen::CodeGenFunction &CGF,
1669 void init(CodeGenFunction &CGF, llvm::Value *receiver) { in init()
1671 NullBB = CGF.createBasicBlock("msgSend.null-receiver"); in init()
1672 llvm::BasicBlock *callBB = CGF.createBasicBlock("msgSend.call"); in init()
1678 llvm::Value *isNull = CGF.Builder.CreateIsNull(receiver); in init()
1679 CGF.Builder.CreateCondBr(isNull, NullBB, callBB); in init()
1682 CGF.EmitBlock(callBB); in init()
1687 RValue complete(CodeGenFunction &CGF, in complete()
1701 llvm::BasicBlock *callBB = CGF.Builder.GetInsertBlock(); in complete()
1703 contBB = CGF.createBasicBlock("msgSend.cont"); in complete()
1704 CGF.Builder.CreateBr(contBB); in complete()
1708 CGF.EmitBlock(NullBB); in complete()
1717 RValue RV = I->getRValue(CGF); in complete()
1720 CGF.EmitARCRelease(RV.getScalarVal(), ARCImpreciseLifetime); in complete()
1726 assert(CGF.Builder.GetInsertBlock() == NullBB); in complete()
1731 if (contBB) CGF.EmitBlock(contBB); in complete()
1738 llvm::Constant *null = CGF.CGM.EmitNullConstant(resultType); in complete()
1744 CGF.EmitBlock(contBB); in complete()
1745 llvm::PHINode *phi = CGF.Builder.CreatePHI(null->getType(), 2); in complete()
1758 CGF.EmitNullInitialization(result.getAggregateAddress(), resultType); in complete()
1759 if (contBB) CGF.EmitBlock(contBB); in complete()
1764 CGF.EmitBlock(contBB); in complete()
1772 llvm::PHINode *real = CGF.Builder.CreatePHI(scalarTy, 2); in complete()
1775 llvm::PHINode *imag = CGF.Builder.CreatePHI(scalarTy, 2); in complete()
1818 llvm::Value *CGObjCMac::GetClass(CodeGenFunction &CGF, in GetClass() argument
1820 return EmitClassRef(CGF, ID); in GetClass()
1824 llvm::Value *CGObjCMac::GetSelector(CodeGenFunction &CGF, Selector Sel) { in GetSelector() argument
1825 return EmitSelector(CGF, Sel); in GetSelector()
1827 Address CGObjCMac::GetAddrOfSelector(CodeGenFunction &CGF, Selector Sel) { in GetAddrOfSelector() argument
1828 return EmitSelectorAddr(CGF, Sel); in GetAddrOfSelector()
1830 llvm::Value *CGObjCMac::GetSelector(CodeGenFunction &CGF, const ObjCMethodDecl in GetSelector() argument
1832 return EmitSelector(CGF, Method->getSelector()); in GetSelector()
1990 CGObjCMac::GenerateMessageSendSuper(CodeGen::CodeGenFunction &CGF, in GenerateMessageSendSuper() argument
2003 CGF.CreateTempAlloca(ObjCTypes.SuperTy, CGF.getPointerAlign(), in GenerateMessageSendSuper()
2006 CGF.Builder.CreateBitCast(Receiver, ObjCTypes.ObjectPtrTy); in GenerateMessageSendSuper()
2007 CGF.Builder.CreateStore( in GenerateMessageSendSuper()
2009 CGF.Builder.CreateStructGEP(ObjCSuper, 0, CharUnits::Zero())); in GenerateMessageSendSuper()
2021 Target = EmitClassRef(CGF, Class->getSuperClass()); in GenerateMessageSendSuper()
2022 Target = CGF.Builder.CreateStructGEP(ObjCTypes.ClassTy, Target, 0); in GenerateMessageSendSuper()
2023 Target = CGF.Builder.CreateAlignedLoad(Target, CGF.getPointerAlign()); in GenerateMessageSendSuper()
2027 CGF.Builder.CreateStructGEP(ObjCTypes.ClassTy, MetaClassPtr, 1); in GenerateMessageSendSuper()
2029 CGF.Builder.CreateAlignedLoad(SuperPtr, CGF.getPointerAlign()); in GenerateMessageSendSuper()
2033 Target = EmitClassRef(CGF, Class->getSuperClass()); in GenerateMessageSendSuper()
2036 ClassPtr = CGF.Builder.CreateStructGEP(ObjCTypes.ClassTy, ClassPtr, 1); in GenerateMessageSendSuper()
2037 Target = CGF.Builder.CreateAlignedLoad(ClassPtr, CGF.getPointerAlign()); in GenerateMessageSendSuper()
2042 CGM.getTypes().ConvertType(CGF.getContext().getObjCClassType()); in GenerateMessageSendSuper()
2043 Target = CGF.Builder.CreateBitCast(Target, ClassTy); in GenerateMessageSendSuper()
2044 CGF.Builder.CreateStore(Target, in GenerateMessageSendSuper()
2045 CGF.Builder.CreateStructGEP(ObjCSuper, 1, CGF.getPointerSize())); in GenerateMessageSendSuper()
2046 return EmitMessageSend(CGF, Return, ResultType, in GenerateMessageSendSuper()
2047 EmitSelector(CGF, Sel), in GenerateMessageSendSuper()
2053 CodeGen::RValue CGObjCMac::GenerateMessageSend(CodeGen::CodeGenFunction &CGF, in GenerateMessageSend() argument
2061 return EmitMessageSend(CGF, Return, ResultType, in GenerateMessageSend()
2062 EmitSelector(CGF, Sel), in GenerateMessageSend()
2063 Receiver, CGF.getContext().getObjCIdType(), in GenerateMessageSend()
2077 CGObjCCommonMac::EmitMessageSend(CodeGen::CodeGenFunction &CGF, in EmitMessageSend() argument
2090 Arg0 = CGF.Builder.CreateBitCast(Arg0, ObjCTypes.ObjectPtrTy); in EmitMessageSend()
2092 ActualArgs.add(RValue::get(Sel), CGF.getContext().getObjCSelType()); in EmitMessageSend()
2118 dyn_cast_or_null<ObjCMethodDecl>(CGF.CurCodeDecl)) { in EmitMessageSend()
2122 llvm::Value *SelfAddr = CGF.GetAddrOfLocalVar(Self).getPointer(); in EmitMessageSend()
2169 nullReturn.init(CGF, Arg0); in EmitMessageSend()
2175 RValue rvalue = CGF.EmitCall(MSI.CallInfo, Callee, Return, ActualArgs, in EmitMessageSend()
2184 return nullReturn.complete(CGF, Return, rvalue, ResultType, CallArgs, in EmitMessageSend()
2924 llvm::Value *CGObjCMac::GenerateProtocolRef(CodeGenFunction &CGF, in GenerateProtocolRef() argument
2954 CodeGenFunction &CGF, in EmitClassRefViaRuntime() argument
2960 CGF.CGM.GetAddrOfConstantCString(ID->getObjCRuntimeNameAsString()) in EmitClassRefViaRuntime()
2962 ASTContext &ctx = CGF.CGM.getContext(); in EmitClassRefViaRuntime()
2964 CGF.Builder.CreateBitCast(className, in EmitClassRefViaRuntime()
2965 CGF.ConvertType( in EmitClassRefViaRuntime()
2967 llvm::CallInst *call = CGF.Builder.CreateCall(lookUpClassFn, className); in EmitClassRefViaRuntime()
4047 void CGObjCMac::EmitTryStmt(CodeGenFunction &CGF, const ObjCAtTryStmt &S) { in EmitTryStmt() argument
4048 return EmitTryOrSynchronizedStmt(CGF, S); in EmitTryStmt()
4051 void CGObjCMac::EmitSynchronizedStmt(CodeGenFunction &CGF, in EmitSynchronizedStmt() argument
4053 return EmitTryOrSynchronizedStmt(CGF, S); in EmitSynchronizedStmt()
4071 void Emit(CodeGenFunction &CGF, Flags flags) override { in Emit()
4075 CGF.createBasicBlock("finally.call_exit"); in Emit()
4077 CGF.createBasicBlock("finally.no_call_exit"); in Emit()
4078 CGF.Builder.CreateCondBr(CGF.Builder.CreateLoad(CallTryExitVar), in Emit()
4081 CGF.EmitBlock(FinallyCallExit); in Emit()
4082 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionTryExitFn(), in Emit()
4085 CGF.EmitBlock(FinallyNoCallExit); in Emit()
4096 CGF.Builder.CreateLoad(CGF.getNormalCleanupDestSlot()); in Emit()
4098 CGF.EmitStmt(FinallyStmt->getFinallyBody()); in Emit()
4100 if (CGF.HaveInsertPoint()) { in Emit()
4101 CGF.Builder.CreateStore(CurCleanupDest, in Emit()
4102 CGF.getNormalCleanupDestSlot()); in Emit()
4105 CGF.EnsureInsertPoint(); in Emit()
4111 llvm::Value *SyncArg = CGF.Builder.CreateLoad(SyncArgSlot); in Emit()
4112 CGF.EmitNounwindRuntimeCall(ObjCTypes.getSyncExitFn(), SyncArg); in Emit()
4118 CodeGenFunction &CGF; member in __anon0aefe8a60811::FragileHazards
4131 FragileHazards(CodeGenFunction &CGF);
4143 FragileHazards::FragileHazards(CodeGenFunction &CGF) : CGF(CGF) { in FragileHazards() argument
4150 I = CGF.CurFn->begin(), E = CGF.CurFn->end(); I != E; ++I) in FragileHazards()
4189 CGF.EmitNounwindRuntimeCall(WriteHazard, Locals); in emitWriteHazard()
4196 call->setCallingConv(CGF.getRuntimeCC()); in emitReadHazard()
4204 CGBuilderTy Builder(CGF, CGF.getLLVMContext()); in emitHazardsInNewBlocks()
4208 FI = CGF.CurFn->begin(), FE = CGF.CurFn->end(); FI != FE; ++FI) { in emitHazardsInNewBlocks()
4246 addIfPresent(AllocasToIgnore, CGF.ReturnValue); in collectLocals()
4247 addIfPresent(AllocasToIgnore, CGF.NormalCleanupDest); in collectLocals()
4251 llvm::BasicBlock &Entry = CGF.CurFn->getEntryBlock(); in collectLocals()
4262 return llvm::FunctionType::get(CGF.VoidTy, tys, false); in GetAsmFnType()
4377 void CGObjCMac::EmitTryOrSynchronizedStmt(CodeGen::CodeGenFunction &CGF, in EmitTryOrSynchronizedStmt() argument
4384 CGF.getJumpDestInCurrentScope("finally.end"); in EmitTryOrSynchronizedStmt()
4389 CGF.getJumpDestInCurrentScope("finally.rethrow"); in EmitTryOrSynchronizedStmt()
4399 CGF.EmitScalarExpr(cast<ObjCAtSynchronizedStmt>(S).getSynchExpr()); in EmitTryOrSynchronizedStmt()
4400 SyncArg = CGF.Builder.CreateBitCast(SyncArg, ObjCTypes.ObjectPtrTy); in EmitTryOrSynchronizedStmt()
4401 CGF.EmitNounwindRuntimeCall(ObjCTypes.getSyncEnterFn(), SyncArg); in EmitTryOrSynchronizedStmt()
4403 SyncArgSlot = CGF.CreateTempAlloca(SyncArg->getType(), in EmitTryOrSynchronizedStmt()
4404 CGF.getPointerAlign(), "sync.arg"); in EmitTryOrSynchronizedStmt()
4405 CGF.Builder.CreateStore(SyncArg, SyncArgSlot); in EmitTryOrSynchronizedStmt()
4410 Address ExceptionData = CGF.CreateTempAlloca(ObjCTypes.ExceptionDataTy, in EmitTryOrSynchronizedStmt()
4411 CGF.getPointerAlign(), in EmitTryOrSynchronizedStmt()
4418 FragileHazards Hazards(CGF); in EmitTryOrSynchronizedStmt()
4428 Address CallTryExitVar = CGF.CreateTempAlloca(CGF.Builder.getInt1Ty(), in EmitTryOrSynchronizedStmt()
4437 CGF.EHStack.pushCleanup<PerformFragileFinally>(NormalAndEHCleanup, &S, in EmitTryOrSynchronizedStmt()
4446 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionTryEnterFn(), in EmitTryOrSynchronizedStmt()
4450 llvm::Constant *Zero = llvm::ConstantInt::get(CGF.Builder.getInt32Ty(), 0); in EmitTryOrSynchronizedStmt()
4452 llvm::Value *SetJmpBuffer = CGF.Builder.CreateGEP( in EmitTryOrSynchronizedStmt()
4455 llvm::CallInst *SetJmpResult = CGF.EmitNounwindRuntimeCall( in EmitTryOrSynchronizedStmt()
4461 llvm::BasicBlock *TryBlock = CGF.createBasicBlock("try"); in EmitTryOrSynchronizedStmt()
4462 llvm::BasicBlock *TryHandler = CGF.createBasicBlock("try.handler"); in EmitTryOrSynchronizedStmt()
4464 CGF.Builder.CreateIsNotNull(SetJmpResult, "did_catch_exception"); in EmitTryOrSynchronizedStmt()
4465 CGF.Builder.CreateCondBr(DidCatch, TryHandler, TryBlock); in EmitTryOrSynchronizedStmt()
4468 CGF.EmitBlock(TryBlock); in EmitTryOrSynchronizedStmt()
4469 CGF.Builder.CreateStore(CGF.Builder.getTrue(), CallTryExitVar); in EmitTryOrSynchronizedStmt()
4470 CGF.EmitStmt(isTry ? cast<ObjCAtTryStmt>(S).getTryBody() in EmitTryOrSynchronizedStmt()
4473 CGBuilderTy::InsertPoint TryFallthroughIP = CGF.Builder.saveAndClearIP(); in EmitTryOrSynchronizedStmt()
4476 CGF.EmitBlock(TryHandler); in EmitTryOrSynchronizedStmt()
4485 CGF.Builder.CreateStore(CGF.Builder.getFalse(), CallTryExitVar); in EmitTryOrSynchronizedStmt()
4486 CGF.EmitBranchThroughCleanup(FinallyRethrow); in EmitTryOrSynchronizedStmt()
4493 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionExtractFn(), in EmitTryOrSynchronizedStmt()
4498 CGF.ObjCEHValueStack.push_back(Caught); in EmitTryOrSynchronizedStmt()
4509 PropagatingExnVar = CGF.CreateTempAlloca(Caught->getType(), in EmitTryOrSynchronizedStmt()
4510 CGF.getPointerAlign(), in EmitTryOrSynchronizedStmt()
4512 CGF.Builder.CreateStore(Caught, PropagatingExnVar); in EmitTryOrSynchronizedStmt()
4516 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionTryEnterFn(), in EmitTryOrSynchronizedStmt()
4520 CGF.EmitNounwindRuntimeCall(ObjCTypes.getSetJmpFn(), in EmitTryOrSynchronizedStmt()
4525 CGF.Builder.CreateIsNotNull(SetJmpResult, "did_catch_exception"); in EmitTryOrSynchronizedStmt()
4527 CatchBlock = CGF.createBasicBlock("catch"); in EmitTryOrSynchronizedStmt()
4528 CatchHandler = CGF.createBasicBlock("catch_for_catch"); in EmitTryOrSynchronizedStmt()
4529 CGF.Builder.CreateCondBr(Threw, CatchHandler, CatchBlock); in EmitTryOrSynchronizedStmt()
4531 CGF.EmitBlock(CatchBlock); in EmitTryOrSynchronizedStmt()
4534 CGF.Builder.CreateStore(CGF.Builder.getInt1(HasFinally), CallTryExitVar); in EmitTryOrSynchronizedStmt()
4562 CodeGenFunction::RunCleanupsScope CatchVarCleanups(CGF); in EmitTryOrSynchronizedStmt()
4565 CGF.EmitAutoVarDecl(*CatchParam); in EmitTryOrSynchronizedStmt()
4566 assert(CGF.HaveInsertPoint() && "DeclStmt destroyed insert point?"); in EmitTryOrSynchronizedStmt()
4569 EmitInitOfCatchParam(CGF, Caught, CatchParam); in EmitTryOrSynchronizedStmt()
4572 CGF.EmitStmt(CatchStmt->getCatchBody()); in EmitTryOrSynchronizedStmt()
4577 CGF.EmitBranchThroughCleanup(FinallyEnd); in EmitTryOrSynchronizedStmt()
4589 llvm::Value *Class = EmitClassRef(CGF, IDecl); in EmitTryOrSynchronizedStmt()
4593 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionMatchFn(), in EmitTryOrSynchronizedStmt()
4596 llvm::BasicBlock *MatchedBlock = CGF.createBasicBlock("match"); in EmitTryOrSynchronizedStmt()
4597 llvm::BasicBlock *NextCatchBlock = CGF.createBasicBlock("catch.next"); in EmitTryOrSynchronizedStmt()
4599 CGF.Builder.CreateCondBr(CGF.Builder.CreateIsNotNull(Match, "matched"), in EmitTryOrSynchronizedStmt()
4603 CGF.EmitBlock(MatchedBlock); in EmitTryOrSynchronizedStmt()
4607 CodeGenFunction::RunCleanupsScope CatchVarCleanups(CGF); in EmitTryOrSynchronizedStmt()
4609 CGF.EmitAutoVarDecl(*CatchParam); in EmitTryOrSynchronizedStmt()
4610 assert(CGF.HaveInsertPoint() && "DeclStmt destroyed insert point?"); in EmitTryOrSynchronizedStmt()
4614 CGF.Builder.CreateBitCast(Caught, in EmitTryOrSynchronizedStmt()
4615 CGF.ConvertType(CatchParam->getType())); in EmitTryOrSynchronizedStmt()
4616 EmitInitOfCatchParam(CGF, Tmp, CatchParam); in EmitTryOrSynchronizedStmt()
4618 CGF.EmitStmt(CatchStmt->getCatchBody()); in EmitTryOrSynchronizedStmt()
4623 CGF.EmitBranchThroughCleanup(FinallyEnd); in EmitTryOrSynchronizedStmt()
4625 CGF.EmitBlock(NextCatchBlock); in EmitTryOrSynchronizedStmt()
4628 CGF.ObjCEHValueStack.pop_back(); in EmitTryOrSynchronizedStmt()
4636 CGF.EmitBranchThroughCleanup(FinallyRethrow); in EmitTryOrSynchronizedStmt()
4640 CGF.EmitBlock(CatchHandler); in EmitTryOrSynchronizedStmt()
4651 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionExtractFn(), in EmitTryOrSynchronizedStmt()
4653 CGF.Builder.CreateStore(NewCaught, PropagatingExnVar); in EmitTryOrSynchronizedStmt()
4656 CGF.Builder.CreateStore(CGF.Builder.getFalse(), CallTryExitVar); in EmitTryOrSynchronizedStmt()
4657 CGF.EmitBranchThroughCleanup(FinallyRethrow); in EmitTryOrSynchronizedStmt()
4665 CGF.Builder.restoreIP(TryFallthroughIP); in EmitTryOrSynchronizedStmt()
4666 if (CGF.HaveInsertPoint()) in EmitTryOrSynchronizedStmt()
4667 CGF.Builder.CreateStore(CGF.Builder.getTrue(), CallTryExitVar); in EmitTryOrSynchronizedStmt()
4668 CGF.PopCleanupBlock(); in EmitTryOrSynchronizedStmt()
4669 CGF.EmitBlock(FinallyEnd.getBlock(), true); in EmitTryOrSynchronizedStmt()
4672 CGBuilderTy::InsertPoint SavedIP = CGF.Builder.saveAndClearIP(); in EmitTryOrSynchronizedStmt()
4673 CGF.EmitBlock(FinallyRethrow.getBlock(), true); in EmitTryOrSynchronizedStmt()
4674 if (CGF.HaveInsertPoint()) { in EmitTryOrSynchronizedStmt()
4678 PropagatingExn = CGF.Builder.CreateLoad(PropagatingExnVar); in EmitTryOrSynchronizedStmt()
4683 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionExtractFn(), in EmitTryOrSynchronizedStmt()
4688 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionThrowFn(), in EmitTryOrSynchronizedStmt()
4690 CGF.Builder.CreateUnreachable(); in EmitTryOrSynchronizedStmt()
4693 CGF.Builder.restoreIP(SavedIP); in EmitTryOrSynchronizedStmt()
4696 void CGObjCMac::EmitThrowStmt(CodeGen::CodeGenFunction &CGF, in EmitThrowStmt() argument
4702 llvm::Value *Exception = CGF.EmitObjCThrowOperand(ThrowExpr); in EmitThrowStmt()
4704 CGF.Builder.CreateBitCast(Exception, ObjCTypes.ObjectPtrTy); in EmitThrowStmt()
4706 assert((!CGF.ObjCEHValueStack.empty() && CGF.ObjCEHValueStack.back()) && in EmitThrowStmt()
4708 ExceptionAsObject = CGF.ObjCEHValueStack.back(); in EmitThrowStmt()
4711 CGF.EmitRuntimeCall(ObjCTypes.getExceptionThrowFn(), ExceptionAsObject) in EmitThrowStmt()
4713 CGF.Builder.CreateUnreachable(); in EmitThrowStmt()
4717 CGF.Builder.ClearInsertionPoint(); in EmitThrowStmt()
4723 llvm::Value * CGObjCMac::EmitObjCWeakRead(CodeGen::CodeGenFunction &CGF, in EmitObjCWeakRead() argument
4726 AddrWeakObj = CGF.Builder.CreateBitCast(AddrWeakObj, in EmitObjCWeakRead()
4729 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcReadWeakFn(), in EmitObjCWeakRead()
4731 read_weak = CGF.Builder.CreateBitCast(read_weak, DestTy); in EmitObjCWeakRead()
4738 void CGObjCMac::EmitObjCWeakAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCWeakAssign() argument
4744 src = (Size == 4) ? CGF.Builder.CreateBitCast(src, CGM.Int32Ty) in EmitObjCWeakAssign()
4745 : CGF.Builder.CreateBitCast(src, CGM.Int64Ty); in EmitObjCWeakAssign()
4746 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCWeakAssign()
4748 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCWeakAssign()
4749 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy); in EmitObjCWeakAssign()
4751 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignWeakFn(), in EmitObjCWeakAssign()
4758 void CGObjCMac::EmitObjCGlobalAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCGlobalAssign() argument
4765 src = (Size == 4) ? CGF.Builder.CreateBitCast(src, CGM.Int32Ty) in EmitObjCGlobalAssign()
4766 : CGF.Builder.CreateBitCast(src, CGM.Int64Ty); in EmitObjCGlobalAssign()
4767 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCGlobalAssign()
4769 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCGlobalAssign()
4770 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy); in EmitObjCGlobalAssign()
4773 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignGlobalFn(), in EmitObjCGlobalAssign()
4776 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignThreadLocalFn(), in EmitObjCGlobalAssign()
4783 void CGObjCMac::EmitObjCIvarAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCIvarAssign() argument
4791 src = (Size == 4) ? CGF.Builder.CreateBitCast(src, CGM.Int32Ty) in EmitObjCIvarAssign()
4792 : CGF.Builder.CreateBitCast(src, CGM.Int64Ty); in EmitObjCIvarAssign()
4793 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCIvarAssign()
4795 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCIvarAssign()
4796 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy); in EmitObjCIvarAssign()
4798 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignIvarFn(), args); in EmitObjCIvarAssign()
4804 void CGObjCMac::EmitObjCStrongCastAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCStrongCastAssign() argument
4810 src = (Size == 4) ? CGF.Builder.CreateBitCast(src, CGM.Int32Ty) in EmitObjCStrongCastAssign()
4811 : CGF.Builder.CreateBitCast(src, CGM.Int64Ty); in EmitObjCStrongCastAssign()
4812 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCStrongCastAssign()
4814 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCStrongCastAssign()
4815 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy); in EmitObjCStrongCastAssign()
4817 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignStrongCastFn(), in EmitObjCStrongCastAssign()
4821 void CGObjCMac::EmitGCMemmoveCollectable(CodeGen::CodeGenFunction &CGF, in EmitGCMemmoveCollectable() argument
4825 SrcPtr = CGF.Builder.CreateBitCast(SrcPtr, ObjCTypes.Int8PtrTy); in EmitGCMemmoveCollectable()
4826 DestPtr = CGF.Builder.CreateBitCast(DestPtr, ObjCTypes.Int8PtrTy); in EmitGCMemmoveCollectable()
4828 CGF.EmitNounwindRuntimeCall(ObjCTypes.GcMemmoveCollectableFn(), args); in EmitGCMemmoveCollectable()
4833 LValue CGObjCMac::EmitObjCValueForIvar(CodeGen::CodeGenFunction &CGF, in EmitObjCValueForIvar() argument
4840 return EmitValueForIvarAtOffset(CGF, ID, BaseValue, Ivar, CVRQualifiers, in EmitObjCValueForIvar()
4841 EmitIvarOffset(CGF, ID, Ivar)); in EmitObjCValueForIvar()
4844 llvm::Value *CGObjCMac::EmitIvarOffset(CodeGen::CodeGenFunction &CGF, in EmitIvarOffset() argument
5014 llvm::Value *CGObjCMac::EmitClassRefFromId(CodeGenFunction &CGF, in EmitClassRefFromId() argument
5030 return CGF.Builder.CreateAlignedLoad(Entry, CGF.getPointerAlign()); in EmitClassRefFromId()
5033 llvm::Value *CGObjCMac::EmitClassRef(CodeGenFunction &CGF, in EmitClassRef() argument
5038 return EmitClassRefViaRuntime(CGF, ID, ObjCTypes); in EmitClassRef()
5042 return EmitClassRefFromId(CGF, RuntimeName); in EmitClassRef()
5045 llvm::Value *CGObjCMac::EmitNSAutoreleasePoolClassRef(CodeGenFunction &CGF) { in EmitNSAutoreleasePoolClassRef() argument
5047 return EmitClassRefFromId(CGF, II); in EmitNSAutoreleasePoolClassRef()
5050 llvm::Value *CGObjCMac::EmitSelector(CodeGenFunction &CGF, Selector Sel) { in EmitSelector() argument
5051 return CGF.Builder.CreateLoad(EmitSelectorAddr(CGF, Sel)); in EmitSelector()
5054 Address CGObjCMac::EmitSelectorAddr(CodeGenFunction &CGF, Selector Sel) { in EmitSelectorAddr() argument
5055 CharUnits Align = CGF.getPointerAlign(); in EmitSelectorAddr()
6430 llvm::Value *CGObjCNonFragileABIMac::GenerateProtocolRef(CodeGenFunction &CGF, in GenerateProtocolRef() argument
6443 CharUnits Align = CGF.getPointerAlign(); in GenerateProtocolRef()
6447 return CGF.Builder.CreateAlignedLoad(PTGV, Align); in GenerateProtocolRef()
6458 return CGF.Builder.CreateAlignedLoad(PTGV, Align); in GenerateProtocolRef()
6982 CodeGen::CodeGenFunction &CGF, in EmitObjCValueForIvar() argument
6988 llvm::Value *Offset = EmitIvarOffset(CGF, ID, Ivar); in EmitObjCValueForIvar()
6989 return EmitValueForIvarAtOffset(CGF, ID, BaseValue, Ivar, CVRQualifiers, in EmitObjCValueForIvar()
6994 CodeGen::CodeGenFunction &CGF, in EmitIvarOffset() argument
6998 IvarOffsetValue = CGF.Builder.CreateAlignedLoad(IvarOffsetValue, in EmitIvarOffset()
6999 CGF.getSizeAlign(), "ivar"); in EmitIvarOffset()
7000 if (IsIvarOffsetKnownIdempotent(CGF, Ivar)) in EmitIvarOffset()
7009 IvarOffsetValue = CGF.Builder.CreateIntCast( in EmitIvarOffset()
7038 CGObjCNonFragileABIMac::EmitVTableMessageSend(CodeGenFunction &CGF, in EmitVTableMessageSend() argument
7052 arg0 = CGF.Builder.CreateBitCast(arg0, ObjCTypes.ObjectPtrTy); in EmitVTableMessageSend()
7079 nullReturn.init(CGF, arg0); in EmitVTableMessageSend()
7123 nullReturn.init(CGF, arg0); in EmitVTableMessageSend()
7130 Address(CGF.Builder.CreateBitCast(messageRef, ObjCTypes.MessageRefPtrTy), in EmitVTableMessageSend()
7131 CGF.getPointerAlign()); in EmitVTableMessageSend()
7138 CGF.Builder.CreateStructGEP(mref, 0, CharUnits::Zero()); in EmitVTableMessageSend()
7139 llvm::Value *calleePtr = CGF.Builder.CreateLoad(calleeAddr, "msgSend_fn"); in EmitVTableMessageSend()
7141 calleePtr = CGF.Builder.CreateBitCast(calleePtr, MSI.MessengerType); in EmitVTableMessageSend()
7144 RValue result = CGF.EmitCall(MSI.CallInfo, callee, returnSlot, args); in EmitVTableMessageSend()
7145 return nullReturn.complete(CGF, returnSlot, result, resultType, formalArgs, in EmitVTableMessageSend()
7151 CGObjCNonFragileABIMac::GenerateMessageSend(CodeGen::CodeGenFunction &CGF, in GenerateMessageSend() argument
7160 ? EmitVTableMessageSend(CGF, Return, ResultType, Sel, in GenerateMessageSend()
7161 Receiver, CGF.getContext().getObjCIdType(), in GenerateMessageSend()
7163 : EmitMessageSend(CGF, Return, ResultType, in GenerateMessageSend()
7164 EmitSelector(CGF, Sel), in GenerateMessageSend()
7165 Receiver, CGF.getContext().getObjCIdType(), in GenerateMessageSend()
7213 CGObjCNonFragileABIMac::EmitClassRefFromId(CodeGenFunction &CGF, in EmitClassRefFromId() argument
7216 CharUnits Align = CGF.getPointerAlign(); in EmitClassRefFromId()
7236 return CGF.Builder.CreateAlignedLoad(Entry, Align); in EmitClassRefFromId()
7239 llvm::Value *CGObjCNonFragileABIMac::EmitClassRef(CodeGenFunction &CGF, in EmitClassRef() argument
7244 return EmitClassRefViaRuntime(CGF, ID, ObjCTypes); in EmitClassRef()
7246 return EmitClassRefFromId(CGF, ID->getIdentifier(), ID); in EmitClassRef()
7250 CodeGenFunction &CGF) { in EmitNSAutoreleasePoolClassRef() argument
7252 return EmitClassRefFromId(CGF, II, nullptr); in EmitNSAutoreleasePoolClassRef()
7256 CGObjCNonFragileABIMac::EmitSuperClassRef(CodeGenFunction &CGF, in EmitSuperClassRef() argument
7258 CharUnits Align = CGF.getPointerAlign(); in EmitSuperClassRef()
7271 return CGF.Builder.CreateAlignedLoad(Entry, Align); in EmitSuperClassRef()
7277 llvm::Value *CGObjCNonFragileABIMac::EmitMetaClassRef(CodeGenFunction &CGF, in EmitMetaClassRef() argument
7280 CharUnits Align = CGF.getPointerAlign(); in EmitMetaClassRef()
7295 return CGF.Builder.CreateAlignedLoad(Entry, Align); in EmitMetaClassRef()
7300 llvm::Value *CGObjCNonFragileABIMac::GetClass(CodeGenFunction &CGF, in GetClass() argument
7309 return EmitClassRef(CGF, ID); in GetClass()
7316 CGObjCNonFragileABIMac::GenerateMessageSendSuper(CodeGen::CodeGenFunction &CGF, in GenerateMessageSendSuper() argument
7330 CGF.CreateTempAlloca(ObjCTypes.SuperTy, CGF.getPointerAlign(), in GenerateMessageSendSuper()
7334 CGF.Builder.CreateBitCast(Receiver, ObjCTypes.ObjectPtrTy); in GenerateMessageSendSuper()
7335 CGF.Builder.CreateStore( in GenerateMessageSendSuper()
7337 CGF.Builder.CreateStructGEP(ObjCSuper, 0, CharUnits::Zero())); in GenerateMessageSendSuper()
7342 Target = EmitMetaClassRef(CGF, Class, Class->isWeakImported()); in GenerateMessageSendSuper()
7344 Target = EmitSuperClassRef(CGF, Class); in GenerateMessageSendSuper()
7349 CGM.getTypes().ConvertType(CGF.getContext().getObjCClassType()); in GenerateMessageSendSuper()
7350 Target = CGF.Builder.CreateBitCast(Target, ClassTy); in GenerateMessageSendSuper()
7351 CGF.Builder.CreateStore( in GenerateMessageSendSuper()
7352 Target, CGF.Builder.CreateStructGEP(ObjCSuper, 1, CGF.getPointerSize())); in GenerateMessageSendSuper()
7355 ? EmitVTableMessageSend(CGF, Return, ResultType, Sel, in GenerateMessageSendSuper()
7358 : EmitMessageSend(CGF, Return, ResultType, in GenerateMessageSendSuper()
7359 EmitSelector(CGF, Sel), in GenerateMessageSendSuper()
7364 llvm::Value *CGObjCNonFragileABIMac::EmitSelector(CodeGenFunction &CGF, in EmitSelector() argument
7366 Address Addr = EmitSelectorAddr(CGF, Sel); in EmitSelector()
7368 llvm::LoadInst* LI = CGF.Builder.CreateLoad(Addr); in EmitSelector()
7374 Address CGObjCNonFragileABIMac::EmitSelectorAddr(CodeGenFunction &CGF, in EmitSelectorAddr() argument
7378 CharUnits Align = CGF.getPointerAlign(); in EmitSelectorAddr()
7399 void CGObjCNonFragileABIMac::EmitObjCIvarAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCIvarAssign() argument
7407 src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) in EmitObjCIvarAssign()
7408 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy)); in EmitObjCIvarAssign()
7409 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCIvarAssign()
7411 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCIvarAssign()
7412 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy); in EmitObjCIvarAssign()
7414 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignIvarFn(), args); in EmitObjCIvarAssign()
7421 CodeGen::CodeGenFunction &CGF, in EmitObjCStrongCastAssign() argument
7427 src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) in EmitObjCStrongCastAssign()
7428 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy)); in EmitObjCStrongCastAssign()
7429 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCStrongCastAssign()
7431 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCStrongCastAssign()
7432 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy); in EmitObjCStrongCastAssign()
7434 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignStrongCastFn(), in EmitObjCStrongCastAssign()
7439 CodeGen::CodeGenFunction &CGF, in EmitGCMemmoveCollectable() argument
7443 SrcPtr = CGF.Builder.CreateBitCast(SrcPtr, ObjCTypes.Int8PtrTy); in EmitGCMemmoveCollectable()
7444 DestPtr = CGF.Builder.CreateBitCast(DestPtr, ObjCTypes.Int8PtrTy); in EmitGCMemmoveCollectable()
7446 CGF.EmitNounwindRuntimeCall(ObjCTypes.GcMemmoveCollectableFn(), args); in EmitGCMemmoveCollectable()
7453 CodeGen::CodeGenFunction &CGF, in EmitObjCWeakRead() argument
7456 AddrWeakObj = CGF.Builder.CreateBitCast(AddrWeakObj, ObjCTypes.PtrObjectPtrTy); in EmitObjCWeakRead()
7458 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcReadWeakFn(), in EmitObjCWeakRead()
7460 read_weak = CGF.Builder.CreateBitCast(read_weak, DestTy); in EmitObjCWeakRead()
7467 void CGObjCNonFragileABIMac::EmitObjCWeakAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCWeakAssign() argument
7473 src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) in EmitObjCWeakAssign()
7474 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy)); in EmitObjCWeakAssign()
7475 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCWeakAssign()
7477 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCWeakAssign()
7478 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy); in EmitObjCWeakAssign()
7480 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignWeakFn(), in EmitObjCWeakAssign()
7487 void CGObjCNonFragileABIMac::EmitObjCGlobalAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCGlobalAssign() argument
7494 src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) in EmitObjCGlobalAssign()
7495 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy)); in EmitObjCGlobalAssign()
7496 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCGlobalAssign()
7498 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCGlobalAssign()
7499 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy); in EmitObjCGlobalAssign()
7502 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignGlobalFn(), in EmitObjCGlobalAssign()
7505 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignThreadLocalFn(), in EmitObjCGlobalAssign()
7510 CGObjCNonFragileABIMac::EmitSynchronizedStmt(CodeGen::CodeGenFunction &CGF, in EmitSynchronizedStmt() argument
7512 EmitAtSynchronizedStmt(CGF, S, in EmitSynchronizedStmt()
7543 void CGObjCNonFragileABIMac::EmitTryStmt(CodeGen::CodeGenFunction &CGF, in EmitTryStmt() argument
7545 EmitTryCatchStmt(CGF, S, in EmitTryStmt()
7552 void CGObjCNonFragileABIMac::EmitThrowStmt(CodeGen::CodeGenFunction &CGF, in EmitThrowStmt() argument
7556 llvm::Value *Exception = CGF.EmitObjCThrowOperand(ThrowExpr); in EmitThrowStmt()
7557 Exception = CGF.Builder.CreateBitCast(Exception, ObjCTypes.ObjectPtrTy); in EmitThrowStmt()
7558 CGF.EmitRuntimeCallOrInvoke(ObjCTypes.getExceptionThrowFn(), Exception) in EmitThrowStmt()
7561 CGF.EmitRuntimeCallOrInvoke(ObjCTypes.getExceptionRethrowFn()) in EmitThrowStmt()
7565 CGF.Builder.CreateUnreachable(); in EmitThrowStmt()
7567 CGF.Builder.ClearInsertionPoint(); in EmitThrowStmt()