Lines Matching refs:CGF
1034 llvm::Value *EmitClassRefViaRuntime(CodeGenFunction &CGF,
1070 CodeGen::RValue EmitMessageSend(CodeGen::CodeGenFunction &CGF,
1103 void GenerateDirectMethodPrologue(CodeGenFunction &CGF, llvm::Function *Fn,
1244 llvm::Value *EmitClassRef(CodeGenFunction &CGF,
1247 llvm::Value *EmitClassRefFromId(CodeGenFunction &CGF,
1250 llvm::Value *EmitNSAutoreleasePoolClassRef(CodeGenFunction &CGF) override;
1312 llvm::Value *EmitSelector(CodeGenFunction &CGF, Selector Sel);
1322 CodeGen::RValue GenerateMessageSend(CodeGen::CodeGenFunction &CGF,
1331 GenerateMessageSendSuper(CodeGen::CodeGenFunction &CGF,
1338 llvm::Value *GetClass(CodeGenFunction &CGF,
1341 llvm::Value *GetSelector(CodeGenFunction &CGF, Selector Sel) override;
1342 Address GetAddrOfSelector(CodeGenFunction &CGF, Selector Sel) override;
1346 llvm::Value *GetSelector(CodeGenFunction &CGF,
1357 llvm::Value *GenerateProtocolRef(CodeGenFunction &CGF,
1370 void EmitTryStmt(CodeGen::CodeGenFunction &CGF,
1372 void EmitSynchronizedStmt(CodeGen::CodeGenFunction &CGF,
1374 void EmitTryOrSynchronizedStmt(CodeGen::CodeGenFunction &CGF, const Stmt &S);
1375 void EmitThrowStmt(CodeGen::CodeGenFunction &CGF, const ObjCAtThrowStmt &S,
1377 llvm::Value * EmitObjCWeakRead(CodeGen::CodeGenFunction &CGF,
1379 void EmitObjCWeakAssign(CodeGen::CodeGenFunction &CGF,
1381 void EmitObjCGlobalAssign(CodeGen::CodeGenFunction &CGF,
1384 void EmitObjCIvarAssign(CodeGen::CodeGenFunction &CGF,
1387 void EmitObjCStrongCastAssign(CodeGen::CodeGenFunction &CGF,
1389 void EmitGCMemmoveCollectable(CodeGen::CodeGenFunction &CGF,
1393 LValue EmitObjCValueForIvar(CodeGen::CodeGenFunction &CGF, QualType ObjectTy,
1396 llvm::Value *EmitIvarOffset(CodeGen::CodeGenFunction &CGF,
1485 CodeGen::RValue EmitVTableMessageSend(CodeGen::CodeGenFunction &CGF,
1506 llvm::Value *EmitLoadOfClassRef(CodeGenFunction &CGF,
1512 llvm::Value *EmitClassRef(CodeGenFunction &CGF,
1515 llvm::Value *EmitClassRefFromId(CodeGenFunction &CGF,
1519 llvm::Value *EmitNSAutoreleasePoolClassRef(CodeGenFunction &CGF) override;
1523 llvm::Value *EmitSuperClassRef(CodeGenFunction &CGF,
1528 llvm::Value *EmitMetaClassRef(CodeGenFunction &CGF,
1540 llvm::Value *EmitSelector(CodeGenFunction &CGF, Selector Sel);
1571 bool IsIvarOffsetKnownIdempotent(const CodeGen::CodeGenFunction &CGF, in IsIvarOffsetKnownIdempotent() argument
1588 dyn_cast_or_null<ObjCMethodDecl>(CGF.CurFuncDecl)) in IsIvarOffsetKnownIdempotent()
1611 CodeGen::RValue GenerateMessageSend(CodeGen::CodeGenFunction &CGF,
1620 GenerateMessageSendSuper(CodeGen::CodeGenFunction &CGF,
1627 llvm::Value *GetClass(CodeGenFunction &CGF,
1630 llvm::Value *GetSelector(CodeGenFunction &CGF, Selector Sel) override in GetSelector() argument
1631 { return EmitSelector(CGF, Sel); } in GetSelector()
1632 Address GetAddrOfSelector(CodeGenFunction &CGF, Selector Sel) override in GetAddrOfSelector() argument
1637 llvm::Value *GetSelector(CodeGenFunction &CGF, in GetSelector() argument
1639 { return EmitSelector(CGF, Method->getSelector()); } in GetSelector()
1647 llvm::Value *GenerateProtocolRef(CodeGenFunction &CGF,
1684 void EmitTryStmt(CodeGen::CodeGenFunction &CGF,
1686 void EmitSynchronizedStmt(CodeGen::CodeGenFunction &CGF,
1688 void EmitThrowStmt(CodeGen::CodeGenFunction &CGF, const ObjCAtThrowStmt &S,
1690 llvm::Value * EmitObjCWeakRead(CodeGen::CodeGenFunction &CGF,
1692 void EmitObjCWeakAssign(CodeGen::CodeGenFunction &CGF,
1694 void EmitObjCGlobalAssign(CodeGen::CodeGenFunction &CGF,
1697 void EmitObjCIvarAssign(CodeGen::CodeGenFunction &CGF,
1700 void EmitObjCStrongCastAssign(CodeGen::CodeGenFunction &CGF,
1702 void EmitGCMemmoveCollectable(CodeGen::CodeGenFunction &CGF,
1705 LValue EmitObjCValueForIvar(CodeGen::CodeGenFunction &CGF, QualType ObjectTy,
1708 llvm::Value *EmitIvarOffset(CodeGen::CodeGenFunction &CGF,
1720 void init(CodeGenFunction &CGF, llvm::Value *receiver) { in init()
1722 NullBB = CGF.createBasicBlock("msgSend.null-receiver"); in init()
1723 llvm::BasicBlock *callBB = CGF.createBasicBlock("msgSend.call"); in init()
1729 llvm::Value *isNull = CGF.Builder.CreateIsNull(receiver); in init()
1730 CGF.Builder.CreateCondBr(isNull, NullBB, callBB); in init()
1733 CGF.EmitBlock(callBB); in init()
1738 RValue complete(CodeGenFunction &CGF, in complete()
1752 llvm::BasicBlock *callBB = CGF.Builder.GetInsertBlock(); in complete()
1754 contBB = CGF.createBasicBlock("msgSend.cont"); in complete()
1755 CGF.Builder.CreateBr(contBB); in complete()
1759 CGF.EmitBlock(NullBB); in complete()
1763 CGObjCRuntime::destroyCalleeDestroyedArguments(CGF, Method, CallArgs); in complete()
1767 assert(CGF.Builder.GetInsertBlock() == NullBB); in complete()
1772 if (contBB) CGF.EmitBlock(contBB); in complete()
1780 CGF.EmitFromMemory(CGF.CGM.EmitNullConstant(resultType), resultType); in complete()
1786 CGF.EmitBlock(contBB); in complete()
1787 llvm::PHINode *phi = CGF.Builder.CreatePHI(null->getType(), 2); in complete()
1800 CGF.EmitNullInitialization(result.getAggregateAddress(), resultType); in complete()
1801 if (contBB) CGF.EmitBlock(contBB); in complete()
1806 CGF.EmitBlock(contBB); in complete()
1814 llvm::PHINode *real = CGF.Builder.CreatePHI(scalarTy, 2); in complete()
1817 llvm::PHINode *imag = CGF.Builder.CreatePHI(scalarTy, 2); in complete()
1882 llvm::Value *CGObjCMac::GetClass(CodeGenFunction &CGF, in GetClass() argument
1884 return EmitClassRef(CGF, ID); in GetClass()
1888 llvm::Value *CGObjCMac::GetSelector(CodeGenFunction &CGF, Selector Sel) { in GetSelector() argument
1889 return EmitSelector(CGF, Sel); in GetSelector()
1891 Address CGObjCMac::GetAddrOfSelector(CodeGenFunction &CGF, Selector Sel) { in GetAddrOfSelector() argument
1894 llvm::Value *CGObjCMac::GetSelector(CodeGenFunction &CGF, const ObjCMethodDecl in GetSelector() argument
1896 return EmitSelector(CGF, Method->getSelector()); in GetSelector()
2055 CGObjCMac::GenerateMessageSendSuper(CodeGen::CodeGenFunction &CGF, in GenerateMessageSendSuper() argument
2068 CGF.CreateTempAlloca(ObjCTypes.SuperTy, CGF.getPointerAlign(), in GenerateMessageSendSuper()
2071 CGF.Builder.CreateBitCast(Receiver, ObjCTypes.ObjectPtrTy); in GenerateMessageSendSuper()
2072 CGF.Builder.CreateStore(ReceiverAsObject, in GenerateMessageSendSuper()
2073 CGF.Builder.CreateStructGEP(ObjCSuper, 0)); in GenerateMessageSendSuper()
2086 Target = EmitClassRef(CGF, Class->getSuperClass()); in GenerateMessageSendSuper()
2087 Target = CGF.Builder.CreateStructGEP(ObjCTypes.ClassTy, Target, 0); in GenerateMessageSendSuper()
2088 Target = CGF.Builder.CreateAlignedLoad(ClassTyPtr, Target, in GenerateMessageSendSuper()
2089 CGF.getPointerAlign()); in GenerateMessageSendSuper()
2093 CGF.Builder.CreateStructGEP(ObjCTypes.ClassTy, MetaClassPtr, 1); in GenerateMessageSendSuper()
2094 llvm::Value *Super = CGF.Builder.CreateAlignedLoad(ClassTyPtr, SuperPtr, in GenerateMessageSendSuper()
2095 CGF.getPointerAlign()); in GenerateMessageSendSuper()
2099 Target = EmitClassRef(CGF, Class->getSuperClass()); in GenerateMessageSendSuper()
2102 ClassPtr = CGF.Builder.CreateStructGEP(ObjCTypes.ClassTy, ClassPtr, 1); in GenerateMessageSendSuper()
2103 Target = CGF.Builder.CreateAlignedLoad(ClassTyPtr, ClassPtr, in GenerateMessageSendSuper()
2104 CGF.getPointerAlign()); in GenerateMessageSendSuper()
2109 CGM.getTypes().ConvertType(CGF.getContext().getObjCClassType()); in GenerateMessageSendSuper()
2110 Target = CGF.Builder.CreateBitCast(Target, ClassTy); in GenerateMessageSendSuper()
2111 CGF.Builder.CreateStore(Target, CGF.Builder.CreateStructGEP(ObjCSuper, 1)); in GenerateMessageSendSuper()
2112 return EmitMessageSend(CGF, Return, ResultType, Sel, ObjCSuper.getPointer(), in GenerateMessageSendSuper()
2118 CodeGen::RValue CGObjCMac::GenerateMessageSend(CodeGen::CodeGenFunction &CGF, in GenerateMessageSend() argument
2126 return EmitMessageSend(CGF, Return, ResultType, Sel, Receiver, in GenerateMessageSend()
2127 CGF.getContext().getObjCIdType(), false, CallArgs, in GenerateMessageSend()
2132 CGObjCCommonMac::EmitMessageSend(CodeGen::CodeGenFunction &CGF, in EmitMessageSend() argument
2144 auto selTy = CGF.getContext().getObjCSelType(); in EmitMessageSend()
2149 Arg0 = CGF.Builder.CreateBitCast(Arg0, ObjCTypes.ObjectPtrTy); in EmitMessageSend()
2164 canMessageReceiverBeNull(CGF, Method, IsSuper, ClassReceiver, Arg0); in EmitMessageSend()
2197 CGF.Builder.CreateBitCast(Fn.getCallee(), MSI.MessengerType)); in EmitMessageSend()
2210 nullReturn.init(CGF, Arg0); in EmitMessageSend()
2215 SelValue = GetSelector(CGF, Sel); in EmitMessageSend()
2221 RValue rvalue = CGF.EmitCall(MSI.CallInfo, Callee, Return, ActualArgs, in EmitMessageSend()
2230 return nullReturn.complete(CGF, Return, rvalue, ResultType, CallArgs, in EmitMessageSend()
2966 llvm::Value *CGObjCMac::GenerateProtocolRef(CodeGenFunction &CGF, in GenerateProtocolRef() argument
2996 CodeGenFunction &CGF, in EmitClassRefViaRuntime() argument
3001 llvm::Value *className = CGF.CGM in EmitClassRefViaRuntime()
3005 ASTContext &ctx = CGF.CGM.getContext(); in EmitClassRefViaRuntime()
3007 CGF.Builder.CreateBitCast(className, in EmitClassRefViaRuntime()
3008 CGF.ConvertType( in EmitClassRefViaRuntime()
3010 llvm::CallInst *call = CGF.Builder.CreateCall(lookUpClassFn, className); in EmitClassRefViaRuntime()
4031 CodeGenFunction &CGF, llvm::Function *Fn, const ObjCMethodDecl *OMD, in GenerateDirectMethodPrologue() argument
4033 auto &Builder = CGF.Builder; in GenerateDirectMethodPrologue()
4035 auto selfAddr = CGF.GetAddrOfLocalVar(OMD->getSelfDecl()); in GenerateDirectMethodPrologue()
4056 auto ResultType = CGF.getContext().getObjCIdType(); in GenerateDirectMethodPrologue()
4068 CGF, ReturnValueSlot(), ResultType, SelfSel, selfValue, Args, OID, in GenerateDirectMethodPrologue()
4080 CGF.createBasicBlock("objc_direct_method.self_is_nil"); in GenerateDirectMethodPrologue()
4082 CGF.createBasicBlock("objc_direct_method.cont"); in GenerateDirectMethodPrologue()
4092 CGF.EmitBlock(SelfIsNilBlock); in GenerateDirectMethodPrologue()
4098 CGF.EmitNullInitialization(CGF.ReturnValue, retTy); in GenerateDirectMethodPrologue()
4100 CGF.EmitBranchThroughCleanup(CGF.ReturnBlock); in GenerateDirectMethodPrologue()
4104 CGF.EmitBlock(ContBlock); in GenerateDirectMethodPrologue()
4112 CGF.EmitVarDecl(*OMD->getCmdDecl()); in GenerateDirectMethodPrologue()
4113 Builder.CreateStore(GetSelector(CGF, OMD), in GenerateDirectMethodPrologue()
4114 CGF.GetAddrOfLocalVar(OMD->getCmdDecl())); in GenerateDirectMethodPrologue()
4240 void CGObjCMac::EmitTryStmt(CodeGenFunction &CGF, const ObjCAtTryStmt &S) { in EmitTryStmt() argument
4241 return EmitTryOrSynchronizedStmt(CGF, S); in EmitTryStmt()
4244 void CGObjCMac::EmitSynchronizedStmt(CodeGenFunction &CGF, in EmitSynchronizedStmt() argument
4246 return EmitTryOrSynchronizedStmt(CGF, S); in EmitSynchronizedStmt()
4264 void Emit(CodeGenFunction &CGF, Flags flags) override { in Emit()
4268 CGF.createBasicBlock("finally.call_exit"); in Emit()
4270 CGF.createBasicBlock("finally.no_call_exit"); in Emit()
4271 CGF.Builder.CreateCondBr(CGF.Builder.CreateLoad(CallTryExitVar), in Emit()
4274 CGF.EmitBlock(FinallyCallExit); in Emit()
4275 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionTryExitFn(), in Emit()
4278 CGF.EmitBlock(FinallyNoCallExit); in Emit()
4289 CGF.Builder.CreateLoad(CGF.getNormalCleanupDestSlot()); in Emit()
4291 CGF.EmitStmt(FinallyStmt->getFinallyBody()); in Emit()
4293 if (CGF.HaveInsertPoint()) { in Emit()
4294 CGF.Builder.CreateStore(CurCleanupDest, in Emit()
4295 CGF.getNormalCleanupDestSlot()); in Emit()
4298 CGF.EnsureInsertPoint(); in Emit()
4304 llvm::Value *SyncArg = CGF.Builder.CreateLoad(SyncArgSlot); in Emit()
4305 CGF.EmitNounwindRuntimeCall(ObjCTypes.getSyncExitFn(), SyncArg); in Emit()
4311 CodeGenFunction &CGF; member in __anon288f636e0811::FragileHazards
4324 FragileHazards(CodeGenFunction &CGF);
4336 FragileHazards::FragileHazards(CodeGenFunction &CGF) : CGF(CGF) { in FragileHazards() argument
4343 I = CGF.CurFn->begin(), E = CGF.CurFn->end(); I != E; ++I) in FragileHazards()
4382 llvm::CallInst *Call = CGF.EmitNounwindRuntimeCall(WriteHazard, Locals); in emitWriteHazard()
4385 CGF.getLLVMContext(), llvm::Attribute::ElementType, in emitWriteHazard()
4393 call->setCallingConv(CGF.getRuntimeCC()); in emitReadHazard()
4405 CGBuilderTy Builder(CGF, CGF.getLLVMContext()); in emitHazardsInNewBlocks()
4409 FI = CGF.CurFn->begin(), FE = CGF.CurFn->end(); FI != FE; ++FI) { in emitHazardsInNewBlocks()
4448 addIfPresent(AllocasToIgnore, CGF.ReturnValue); in collectLocals()
4449 addIfPresent(AllocasToIgnore, CGF.NormalCleanupDest); in collectLocals()
4453 llvm::BasicBlock &Entry = CGF.CurFn->getEntryBlock(); in collectLocals()
4464 return llvm::FunctionType::get(CGF.VoidTy, tys, false); in GetAsmFnType()
4579 void CGObjCMac::EmitTryOrSynchronizedStmt(CodeGen::CodeGenFunction &CGF, in EmitTryOrSynchronizedStmt() argument
4586 CGF.getJumpDestInCurrentScope("finally.end"); in EmitTryOrSynchronizedStmt()
4591 CGF.getJumpDestInCurrentScope("finally.rethrow"); in EmitTryOrSynchronizedStmt()
4601 CGF.EmitScalarExpr(cast<ObjCAtSynchronizedStmt>(S).getSynchExpr()); in EmitTryOrSynchronizedStmt()
4602 SyncArg = CGF.Builder.CreateBitCast(SyncArg, ObjCTypes.ObjectPtrTy); in EmitTryOrSynchronizedStmt()
4603 CGF.EmitNounwindRuntimeCall(ObjCTypes.getSyncEnterFn(), SyncArg); in EmitTryOrSynchronizedStmt()
4605 SyncArgSlot = CGF.CreateTempAlloca(SyncArg->getType(), in EmitTryOrSynchronizedStmt()
4606 CGF.getPointerAlign(), "sync.arg"); in EmitTryOrSynchronizedStmt()
4607 CGF.Builder.CreateStore(SyncArg, SyncArgSlot); in EmitTryOrSynchronizedStmt()
4612 Address ExceptionData = CGF.CreateTempAlloca(ObjCTypes.ExceptionDataTy, in EmitTryOrSynchronizedStmt()
4613 CGF.getPointerAlign(), in EmitTryOrSynchronizedStmt()
4620 FragileHazards Hazards(CGF); in EmitTryOrSynchronizedStmt()
4630 Address CallTryExitVar = CGF.CreateTempAlloca(CGF.Builder.getInt1Ty(), in EmitTryOrSynchronizedStmt()
4639 CGF.EHStack.pushCleanup<PerformFragileFinally>(NormalAndEHCleanup, &S, in EmitTryOrSynchronizedStmt()
4648 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionTryEnterFn(), in EmitTryOrSynchronizedStmt()
4652 llvm::Constant *Zero = llvm::ConstantInt::get(CGF.Builder.getInt32Ty(), 0); in EmitTryOrSynchronizedStmt()
4654 llvm::Value *SetJmpBuffer = CGF.Builder.CreateGEP( in EmitTryOrSynchronizedStmt()
4657 llvm::CallInst *SetJmpResult = CGF.EmitNounwindRuntimeCall( in EmitTryOrSynchronizedStmt()
4663 llvm::BasicBlock *TryBlock = CGF.createBasicBlock("try"); in EmitTryOrSynchronizedStmt()
4664 llvm::BasicBlock *TryHandler = CGF.createBasicBlock("try.handler"); in EmitTryOrSynchronizedStmt()
4666 CGF.Builder.CreateIsNotNull(SetJmpResult, "did_catch_exception"); in EmitTryOrSynchronizedStmt()
4667 CGF.Builder.CreateCondBr(DidCatch, TryHandler, TryBlock); in EmitTryOrSynchronizedStmt()
4670 CGF.EmitBlock(TryBlock); in EmitTryOrSynchronizedStmt()
4671 CGF.Builder.CreateStore(CGF.Builder.getTrue(), CallTryExitVar); in EmitTryOrSynchronizedStmt()
4672 CGF.EmitStmt(isTry ? cast<ObjCAtTryStmt>(S).getTryBody() in EmitTryOrSynchronizedStmt()
4675 CGBuilderTy::InsertPoint TryFallthroughIP = CGF.Builder.saveAndClearIP(); in EmitTryOrSynchronizedStmt()
4678 CGF.EmitBlock(TryHandler); in EmitTryOrSynchronizedStmt()
4687 CGF.Builder.CreateStore(CGF.Builder.getFalse(), CallTryExitVar); in EmitTryOrSynchronizedStmt()
4688 CGF.EmitBranchThroughCleanup(FinallyRethrow); in EmitTryOrSynchronizedStmt()
4695 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionExtractFn(), in EmitTryOrSynchronizedStmt()
4700 CGF.ObjCEHValueStack.push_back(Caught); in EmitTryOrSynchronizedStmt()
4711 PropagatingExnVar = CGF.CreateTempAlloca(Caught->getType(), in EmitTryOrSynchronizedStmt()
4712 CGF.getPointerAlign(), in EmitTryOrSynchronizedStmt()
4714 CGF.Builder.CreateStore(Caught, PropagatingExnVar); in EmitTryOrSynchronizedStmt()
4718 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionTryEnterFn(), in EmitTryOrSynchronizedStmt()
4722 CGF.EmitNounwindRuntimeCall(ObjCTypes.getSetJmpFn(), in EmitTryOrSynchronizedStmt()
4727 CGF.Builder.CreateIsNotNull(SetJmpResult, "did_catch_exception"); in EmitTryOrSynchronizedStmt()
4729 CatchBlock = CGF.createBasicBlock("catch"); in EmitTryOrSynchronizedStmt()
4730 CatchHandler = CGF.createBasicBlock("catch_for_catch"); in EmitTryOrSynchronizedStmt()
4731 CGF.Builder.CreateCondBr(Threw, CatchHandler, CatchBlock); in EmitTryOrSynchronizedStmt()
4733 CGF.EmitBlock(CatchBlock); in EmitTryOrSynchronizedStmt()
4736 CGF.Builder.CreateStore(CGF.Builder.getInt1(HasFinally), CallTryExitVar); in EmitTryOrSynchronizedStmt()
4762 CodeGenFunction::RunCleanupsScope CatchVarCleanups(CGF); in EmitTryOrSynchronizedStmt()
4765 CGF.EmitAutoVarDecl(*CatchParam); in EmitTryOrSynchronizedStmt()
4766 assert(CGF.HaveInsertPoint() && "DeclStmt destroyed insert point?"); in EmitTryOrSynchronizedStmt()
4769 EmitInitOfCatchParam(CGF, Caught, CatchParam); in EmitTryOrSynchronizedStmt()
4772 CGF.EmitStmt(CatchStmt->getCatchBody()); in EmitTryOrSynchronizedStmt()
4777 CGF.EmitBranchThroughCleanup(FinallyEnd); in EmitTryOrSynchronizedStmt()
4789 llvm::Value *Class = EmitClassRef(CGF, IDecl); in EmitTryOrSynchronizedStmt()
4793 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionMatchFn(), in EmitTryOrSynchronizedStmt()
4796 llvm::BasicBlock *MatchedBlock = CGF.createBasicBlock("match"); in EmitTryOrSynchronizedStmt()
4797 llvm::BasicBlock *NextCatchBlock = CGF.createBasicBlock("catch.next"); in EmitTryOrSynchronizedStmt()
4799 CGF.Builder.CreateCondBr(CGF.Builder.CreateIsNotNull(Match, "matched"), in EmitTryOrSynchronizedStmt()
4803 CGF.EmitBlock(MatchedBlock); in EmitTryOrSynchronizedStmt()
4807 CodeGenFunction::RunCleanupsScope CatchVarCleanups(CGF); in EmitTryOrSynchronizedStmt()
4809 CGF.EmitAutoVarDecl(*CatchParam); in EmitTryOrSynchronizedStmt()
4810 assert(CGF.HaveInsertPoint() && "DeclStmt destroyed insert point?"); in EmitTryOrSynchronizedStmt()
4814 CGF.Builder.CreateBitCast(Caught, in EmitTryOrSynchronizedStmt()
4815 CGF.ConvertType(CatchParam->getType())); in EmitTryOrSynchronizedStmt()
4816 EmitInitOfCatchParam(CGF, Tmp, CatchParam); in EmitTryOrSynchronizedStmt()
4818 CGF.EmitStmt(CatchStmt->getCatchBody()); in EmitTryOrSynchronizedStmt()
4823 CGF.EmitBranchThroughCleanup(FinallyEnd); in EmitTryOrSynchronizedStmt()
4825 CGF.EmitBlock(NextCatchBlock); in EmitTryOrSynchronizedStmt()
4828 CGF.ObjCEHValueStack.pop_back(); in EmitTryOrSynchronizedStmt()
4836 CGF.EmitBranchThroughCleanup(FinallyRethrow); in EmitTryOrSynchronizedStmt()
4840 CGF.EmitBlock(CatchHandler); in EmitTryOrSynchronizedStmt()
4851 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionExtractFn(), in EmitTryOrSynchronizedStmt()
4853 CGF.Builder.CreateStore(NewCaught, PropagatingExnVar); in EmitTryOrSynchronizedStmt()
4856 CGF.Builder.CreateStore(CGF.Builder.getFalse(), CallTryExitVar); in EmitTryOrSynchronizedStmt()
4857 CGF.EmitBranchThroughCleanup(FinallyRethrow); in EmitTryOrSynchronizedStmt()
4865 CGF.Builder.restoreIP(TryFallthroughIP); in EmitTryOrSynchronizedStmt()
4866 if (CGF.HaveInsertPoint()) in EmitTryOrSynchronizedStmt()
4867 CGF.Builder.CreateStore(CGF.Builder.getTrue(), CallTryExitVar); in EmitTryOrSynchronizedStmt()
4868 CGF.PopCleanupBlock(); in EmitTryOrSynchronizedStmt()
4869 CGF.EmitBlock(FinallyEnd.getBlock(), true); in EmitTryOrSynchronizedStmt()
4872 CGBuilderTy::InsertPoint SavedIP = CGF.Builder.saveAndClearIP(); in EmitTryOrSynchronizedStmt()
4873 CGF.EmitBlock(FinallyRethrow.getBlock(), true); in EmitTryOrSynchronizedStmt()
4874 if (CGF.HaveInsertPoint()) { in EmitTryOrSynchronizedStmt()
4878 PropagatingExn = CGF.Builder.CreateLoad(PropagatingExnVar); in EmitTryOrSynchronizedStmt()
4883 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionExtractFn(), in EmitTryOrSynchronizedStmt()
4888 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionThrowFn(), in EmitTryOrSynchronizedStmt()
4890 CGF.Builder.CreateUnreachable(); in EmitTryOrSynchronizedStmt()
4893 CGF.Builder.restoreIP(SavedIP); in EmitTryOrSynchronizedStmt()
4896 void CGObjCMac::EmitThrowStmt(CodeGen::CodeGenFunction &CGF, in EmitThrowStmt() argument
4902 llvm::Value *Exception = CGF.EmitObjCThrowOperand(ThrowExpr); in EmitThrowStmt()
4904 CGF.Builder.CreateBitCast(Exception, ObjCTypes.ObjectPtrTy); in EmitThrowStmt()
4906 assert((!CGF.ObjCEHValueStack.empty() && CGF.ObjCEHValueStack.back()) && in EmitThrowStmt()
4908 ExceptionAsObject = CGF.ObjCEHValueStack.back(); in EmitThrowStmt()
4911 CGF.EmitRuntimeCall(ObjCTypes.getExceptionThrowFn(), ExceptionAsObject) in EmitThrowStmt()
4913 CGF.Builder.CreateUnreachable(); in EmitThrowStmt()
4917 CGF.Builder.ClearInsertionPoint(); in EmitThrowStmt()
4923 llvm::Value * CGObjCMac::EmitObjCWeakRead(CodeGen::CodeGenFunction &CGF, in EmitObjCWeakRead() argument
4926 llvm::Value *AddrWeakObjVal = CGF.Builder.CreateBitCast( in EmitObjCWeakRead()
4929 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcReadWeakFn(), in EmitObjCWeakRead()
4931 read_weak = CGF.Builder.CreateBitCast(read_weak, DestTy); in EmitObjCWeakRead()
4938 void CGObjCMac::EmitObjCWeakAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCWeakAssign() argument
4944 src = (Size == 4) ? CGF.Builder.CreateBitCast(src, CGM.Int32Ty) in EmitObjCWeakAssign()
4945 : CGF.Builder.CreateBitCast(src, CGM.Int64Ty); in EmitObjCWeakAssign()
4946 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCWeakAssign()
4948 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCWeakAssign()
4950 CGF.Builder.CreateBitCast(dst.getPointer(), ObjCTypes.PtrObjectPtrTy); in EmitObjCWeakAssign()
4952 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignWeakFn(), in EmitObjCWeakAssign()
4959 void CGObjCMac::EmitObjCGlobalAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCGlobalAssign() argument
4966 src = (Size == 4) ? CGF.Builder.CreateBitCast(src, CGM.Int32Ty) in EmitObjCGlobalAssign()
4967 : CGF.Builder.CreateBitCast(src, CGM.Int64Ty); in EmitObjCGlobalAssign()
4968 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCGlobalAssign()
4970 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCGlobalAssign()
4972 CGF.Builder.CreateBitCast(dst.getPointer(), ObjCTypes.PtrObjectPtrTy); in EmitObjCGlobalAssign()
4975 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignGlobalFn(), in EmitObjCGlobalAssign()
4978 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignThreadLocalFn(), in EmitObjCGlobalAssign()
4985 void CGObjCMac::EmitObjCIvarAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCIvarAssign() argument
4993 src = (Size == 4) ? CGF.Builder.CreateBitCast(src, CGM.Int32Ty) in EmitObjCIvarAssign()
4994 : CGF.Builder.CreateBitCast(src, CGM.Int64Ty); in EmitObjCIvarAssign()
4995 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCIvarAssign()
4997 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCIvarAssign()
4999 CGF.Builder.CreateBitCast(dst.getPointer(), ObjCTypes.PtrObjectPtrTy); in EmitObjCIvarAssign()
5001 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignIvarFn(), args); in EmitObjCIvarAssign()
5007 void CGObjCMac::EmitObjCStrongCastAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCStrongCastAssign() argument
5013 src = (Size == 4) ? CGF.Builder.CreateBitCast(src, CGM.Int32Ty) in EmitObjCStrongCastAssign()
5014 : CGF.Builder.CreateBitCast(src, CGM.Int64Ty); in EmitObjCStrongCastAssign()
5015 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCStrongCastAssign()
5017 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCStrongCastAssign()
5019 CGF.Builder.CreateBitCast(dst.getPointer(), ObjCTypes.PtrObjectPtrTy); in EmitObjCStrongCastAssign()
5021 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignStrongCastFn(), in EmitObjCStrongCastAssign()
5025 void CGObjCMac::EmitGCMemmoveCollectable(CodeGen::CodeGenFunction &CGF, in EmitGCMemmoveCollectable() argument
5029 SrcPtr = CGF.Builder.CreateElementBitCast(SrcPtr, CGF.Int8Ty); in EmitGCMemmoveCollectable()
5030 DestPtr = CGF.Builder.CreateElementBitCast(DestPtr, CGF.Int8Ty); in EmitGCMemmoveCollectable()
5032 CGF.EmitNounwindRuntimeCall(ObjCTypes.GcMemmoveCollectableFn(), args); in EmitGCMemmoveCollectable()
5037 LValue CGObjCMac::EmitObjCValueForIvar(CodeGen::CodeGenFunction &CGF, in EmitObjCValueForIvar() argument
5044 return EmitValueForIvarAtOffset(CGF, ID, BaseValue, Ivar, CVRQualifiers, in EmitObjCValueForIvar()
5045 EmitIvarOffset(CGF, ID, Ivar)); in EmitObjCValueForIvar()
5048 llvm::Value *CGObjCMac::EmitIvarOffset(CodeGen::CodeGenFunction &CGF, in EmitIvarOffset() argument
5230 llvm::Value *CGObjCMac::EmitClassRefFromId(CodeGenFunction &CGF, in EmitClassRefFromId() argument
5246 return CGF.Builder.CreateAlignedLoad(Entry->getValueType(), Entry, in EmitClassRefFromId()
5247 CGF.getPointerAlign()); in EmitClassRefFromId()
5250 llvm::Value *CGObjCMac::EmitClassRef(CodeGenFunction &CGF, in EmitClassRef() argument
5255 return EmitClassRefViaRuntime(CGF, ID, ObjCTypes); in EmitClassRef()
5259 return EmitClassRefFromId(CGF, RuntimeName); in EmitClassRef()
5262 llvm::Value *CGObjCMac::EmitNSAutoreleasePoolClassRef(CodeGenFunction &CGF) { in EmitNSAutoreleasePoolClassRef() argument
5264 return EmitClassRefFromId(CGF, II); in EmitNSAutoreleasePoolClassRef()
5267 llvm::Value *CGObjCMac::EmitSelector(CodeGenFunction &CGF, Selector Sel) { in EmitSelector() argument
5268 return CGF.Builder.CreateLoad(EmitSelectorAddr(Sel)); in EmitSelector()
6626 llvm::Value *CGObjCNonFragileABIMac::GenerateProtocolRef(CodeGenFunction &CGF, in GenerateProtocolRef() argument
6640 CharUnits Align = CGF.getPointerAlign(); in GenerateProtocolRef()
6644 return CGF.Builder.CreateAlignedLoad(PTGV->getValueType(), PTGV, Align); in GenerateProtocolRef()
6655 return CGF.Builder.CreateAlignedLoad(PTGV->getValueType(), PTGV, Align); in GenerateProtocolRef()
7205 CodeGen::CodeGenFunction &CGF, in EmitObjCValueForIvar() argument
7211 llvm::Value *Offset = EmitIvarOffset(CGF, ID, Ivar); in EmitObjCValueForIvar()
7212 return EmitValueForIvarAtOffset(CGF, ID, BaseValue, Ivar, CVRQualifiers, in EmitObjCValueForIvar()
7217 CGObjCNonFragileABIMac::EmitIvarOffset(CodeGen::CodeGenFunction &CGF, in EmitIvarOffset() argument
7228 CGF.Builder.CreateAlignedLoad(GV->getValueType(), GV, in EmitIvarOffset()
7229 CGF.getSizeAlign(), "ivar"); in EmitIvarOffset()
7230 if (IsIvarOffsetKnownIdempotent(CGF, Ivar)) in EmitIvarOffset()
7240 IvarOffsetValue = CGF.Builder.CreateIntCast( in EmitIvarOffset()
7269 CGObjCNonFragileABIMac::EmitVTableMessageSend(CodeGenFunction &CGF, in EmitVTableMessageSend() argument
7283 arg0 = CGF.Builder.CreateBitCast(arg0, ObjCTypes.ObjectPtrTy); in EmitVTableMessageSend()
7310 nullReturn.init(CGF, arg0); in EmitVTableMessageSend()
7354 nullReturn.init(CGF, arg0); in EmitVTableMessageSend()
7361 Address(CGF.Builder.CreateBitCast(messageRef, ObjCTypes.MessageRefPtrTy), in EmitVTableMessageSend()
7362 ObjCTypes.MessageRefTy, CGF.getPointerAlign()); in EmitVTableMessageSend()
7368 Address calleeAddr = CGF.Builder.CreateStructGEP(mref, 0); in EmitVTableMessageSend()
7369 llvm::Value *calleePtr = CGF.Builder.CreateLoad(calleeAddr, "msgSend_fn"); in EmitVTableMessageSend()
7371 calleePtr = CGF.Builder.CreateBitCast(calleePtr, MSI.MessengerType); in EmitVTableMessageSend()
7374 RValue result = CGF.EmitCall(MSI.CallInfo, callee, returnSlot, args); in EmitVTableMessageSend()
7375 return nullReturn.complete(CGF, returnSlot, result, resultType, formalArgs, in EmitVTableMessageSend()
7381 CGObjCNonFragileABIMac::GenerateMessageSend(CodeGen::CodeGenFunction &CGF, in GenerateMessageSend() argument
7390 ? EmitVTableMessageSend(CGF, Return, ResultType, Sel, in GenerateMessageSend()
7391 Receiver, CGF.getContext().getObjCIdType(), in GenerateMessageSend()
7393 : EmitMessageSend(CGF, Return, ResultType, Sel, in GenerateMessageSend()
7394 Receiver, CGF.getContext().getObjCIdType(), in GenerateMessageSend()
7458 CGObjCNonFragileABIMac::EmitLoadOfClassRef(CodeGenFunction &CGF, in EmitLoadOfClassRef() argument
7464 return CGF.EmitRuntimeCall( in EmitLoadOfClassRef()
7468 CharUnits Align = CGF.getPointerAlign(); in EmitLoadOfClassRef()
7469 return CGF.Builder.CreateAlignedLoad(Entry->getValueType(), Entry, Align); in EmitLoadOfClassRef()
7473 CGObjCNonFragileABIMac::EmitClassRefFromId(CodeGenFunction &CGF, in EmitClassRefFromId() argument
7495 Entry->setAlignment(CGF.getPointerAlign().getAsAlign()); in EmitClassRefFromId()
7502 return EmitLoadOfClassRef(CGF, ID, Entry); in EmitClassRefFromId()
7505 llvm::Value *CGObjCNonFragileABIMac::EmitClassRef(CodeGenFunction &CGF, in EmitClassRef() argument
7510 return EmitClassRefViaRuntime(CGF, ID, ObjCTypes); in EmitClassRef()
7512 return EmitClassRefFromId(CGF, ID->getIdentifier(), ID); in EmitClassRef()
7516 CodeGenFunction &CGF) { in EmitNSAutoreleasePoolClassRef() argument
7518 return EmitClassRefFromId(CGF, II, nullptr); in EmitNSAutoreleasePoolClassRef()
7522 CGObjCNonFragileABIMac::EmitSuperClassRef(CodeGenFunction &CGF, in EmitSuperClassRef() argument
7533 Entry->setAlignment(CGF.getPointerAlign().getAsAlign()); in EmitSuperClassRef()
7538 return EmitLoadOfClassRef(CGF, ID, Entry); in EmitSuperClassRef()
7544 llvm::Value *CGObjCNonFragileABIMac::EmitMetaClassRef(CodeGenFunction &CGF, in EmitMetaClassRef() argument
7547 CharUnits Align = CGF.getPointerAlign(); in EmitMetaClassRef()
7561 return CGF.Builder.CreateAlignedLoad(ObjCTypes.ClassnfABIPtrTy, Entry, Align); in EmitMetaClassRef()
7566 llvm::Value *CGObjCNonFragileABIMac::GetClass(CodeGenFunction &CGF, in GetClass() argument
7575 return EmitClassRef(CGF, ID); in GetClass()
7582 CGObjCNonFragileABIMac::GenerateMessageSendSuper(CodeGen::CodeGenFunction &CGF, in GenerateMessageSendSuper() argument
7596 CGF.CreateTempAlloca(ObjCTypes.SuperTy, CGF.getPointerAlign(), in GenerateMessageSendSuper()
7600 CGF.Builder.CreateBitCast(Receiver, ObjCTypes.ObjectPtrTy); in GenerateMessageSendSuper()
7601 CGF.Builder.CreateStore(ReceiverAsObject, in GenerateMessageSendSuper()
7602 CGF.Builder.CreateStructGEP(ObjCSuper, 0)); in GenerateMessageSendSuper()
7607 Target = EmitMetaClassRef(CGF, Class, Class->isWeakImported()); in GenerateMessageSendSuper()
7609 Target = EmitSuperClassRef(CGF, Class); in GenerateMessageSendSuper()
7614 CGM.getTypes().ConvertType(CGF.getContext().getObjCClassType()); in GenerateMessageSendSuper()
7615 Target = CGF.Builder.CreateBitCast(Target, ClassTy); in GenerateMessageSendSuper()
7616 CGF.Builder.CreateStore(Target, CGF.Builder.CreateStructGEP(ObjCSuper, 1)); in GenerateMessageSendSuper()
7619 ? EmitVTableMessageSend(CGF, Return, ResultType, Sel, in GenerateMessageSendSuper()
7622 : EmitMessageSend(CGF, Return, ResultType, Sel, in GenerateMessageSendSuper()
7627 llvm::Value *CGObjCNonFragileABIMac::EmitSelector(CodeGenFunction &CGF, in EmitSelector() argument
7631 llvm::LoadInst* LI = CGF.Builder.CreateLoad(Addr); in EmitSelector()
7662 void CGObjCNonFragileABIMac::EmitObjCIvarAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCIvarAssign() argument
7670 src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) in EmitObjCIvarAssign()
7671 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy)); in EmitObjCIvarAssign()
7672 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCIvarAssign()
7674 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCIvarAssign()
7676 CGF.Builder.CreateBitCast(dst.getPointer(), ObjCTypes.PtrObjectPtrTy); in EmitObjCIvarAssign()
7678 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignIvarFn(), args); in EmitObjCIvarAssign()
7685 CodeGen::CodeGenFunction &CGF, in EmitObjCStrongCastAssign() argument
7691 src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) in EmitObjCStrongCastAssign()
7692 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy)); in EmitObjCStrongCastAssign()
7693 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCStrongCastAssign()
7695 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCStrongCastAssign()
7697 CGF.Builder.CreateBitCast(dst.getPointer(), ObjCTypes.PtrObjectPtrTy); in EmitObjCStrongCastAssign()
7699 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignStrongCastFn(), in EmitObjCStrongCastAssign()
7704 CodeGen::CodeGenFunction &CGF, in EmitGCMemmoveCollectable() argument
7708 SrcPtr = CGF.Builder.CreateElementBitCast(SrcPtr, CGF.Int8Ty); in EmitGCMemmoveCollectable()
7709 DestPtr = CGF.Builder.CreateElementBitCast(DestPtr, CGF.Int8Ty); in EmitGCMemmoveCollectable()
7711 CGF.EmitNounwindRuntimeCall(ObjCTypes.GcMemmoveCollectableFn(), args); in EmitGCMemmoveCollectable()
7718 CodeGen::CodeGenFunction &CGF, in EmitObjCWeakRead() argument
7721 llvm::Value *AddrWeakObjVal = CGF.Builder.CreateBitCast( in EmitObjCWeakRead()
7724 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcReadWeakFn(), in EmitObjCWeakRead()
7726 read_weak = CGF.Builder.CreateBitCast(read_weak, DestTy); in EmitObjCWeakRead()
7733 void CGObjCNonFragileABIMac::EmitObjCWeakAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCWeakAssign() argument
7739 src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) in EmitObjCWeakAssign()
7740 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy)); in EmitObjCWeakAssign()
7741 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCWeakAssign()
7743 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCWeakAssign()
7745 CGF.Builder.CreateBitCast(dst.getPointer(), ObjCTypes.PtrObjectPtrTy); in EmitObjCWeakAssign()
7747 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignWeakFn(), in EmitObjCWeakAssign()
7754 void CGObjCNonFragileABIMac::EmitObjCGlobalAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCGlobalAssign() argument
7761 src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) in EmitObjCGlobalAssign()
7762 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy)); in EmitObjCGlobalAssign()
7763 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCGlobalAssign()
7765 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCGlobalAssign()
7767 CGF.Builder.CreateBitCast(dst.getPointer(), ObjCTypes.PtrObjectPtrTy); in EmitObjCGlobalAssign()
7770 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignGlobalFn(), in EmitObjCGlobalAssign()
7773 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignThreadLocalFn(), in EmitObjCGlobalAssign()
7778 CGObjCNonFragileABIMac::EmitSynchronizedStmt(CodeGen::CodeGenFunction &CGF, in EmitSynchronizedStmt() argument
7780 EmitAtSynchronizedStmt(CGF, S, ObjCTypes.getSyncEnterFn(), in EmitSynchronizedStmt()
7810 void CGObjCNonFragileABIMac::EmitTryStmt(CodeGen::CodeGenFunction &CGF, in EmitTryStmt() argument
7812 EmitTryCatchStmt(CGF, S, ObjCTypes.getObjCBeginCatchFn(), in EmitTryStmt()
7818 void CGObjCNonFragileABIMac::EmitThrowStmt(CodeGen::CodeGenFunction &CGF, in EmitThrowStmt() argument
7822 llvm::Value *Exception = CGF.EmitObjCThrowOperand(ThrowExpr); in EmitThrowStmt()
7823 Exception = CGF.Builder.CreateBitCast(Exception, ObjCTypes.ObjectPtrTy); in EmitThrowStmt()
7825 CGF.EmitRuntimeCallOrInvoke(ObjCTypes.getExceptionThrowFn(), Exception); in EmitThrowStmt()
7829 CGF.EmitRuntimeCallOrInvoke(ObjCTypes.getExceptionRethrowFn()); in EmitThrowStmt()
7833 CGF.Builder.CreateUnreachable(); in EmitThrowStmt()
7835 CGF.Builder.ClearInsertionPoint(); in EmitThrowStmt()