reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

tools/clang/lib/CodeGen/CGObjCMac.cpp
 4448     CGF.getJumpDestInCurrentScope("finally.end");
 4453     CGF.getJumpDestInCurrentScope("finally.rethrow");
 4463       CGF.EmitScalarExpr(cast<ObjCAtSynchronizedStmt>(S).getSynchExpr());
 4464     SyncArg = CGF.Builder.CreateBitCast(SyncArg, ObjCTypes.ObjectPtrTy);
 4465     CGF.EmitNounwindRuntimeCall(ObjCTypes.getSyncEnterFn(), SyncArg);
 4467     SyncArgSlot = CGF.CreateTempAlloca(SyncArg->getType(),
 4468                                        CGF.getPointerAlign(), "sync.arg");
 4469     CGF.Builder.CreateStore(SyncArg, SyncArgSlot);
 4474   Address ExceptionData = CGF.CreateTempAlloca(ObjCTypes.ExceptionDataTy,
 4475                                                CGF.getPointerAlign(),
 4482   FragileHazards Hazards(CGF);
 4492   Address CallTryExitVar = CGF.CreateTempAlloca(CGF.Builder.getInt1Ty(),
 4492   Address CallTryExitVar = CGF.CreateTempAlloca(CGF.Builder.getInt1Ty(),
 4501   CGF.EHStack.pushCleanup<PerformFragileFinally>(NormalAndEHCleanup, &S,
 4510   CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionTryEnterFn(),
 4514   llvm::Constant *Zero = llvm::ConstantInt::get(CGF.Builder.getInt32Ty(), 0);
 4516   llvm::Value *SetJmpBuffer = CGF.Builder.CreateGEP(
 4519   llvm::CallInst *SetJmpResult = CGF.EmitNounwindRuntimeCall(
 4525   llvm::BasicBlock *TryBlock = CGF.createBasicBlock("try");
 4526   llvm::BasicBlock *TryHandler = CGF.createBasicBlock("try.handler");
 4528     CGF.Builder.CreateIsNotNull(SetJmpResult, "did_catch_exception");
 4529   CGF.Builder.CreateCondBr(DidCatch, TryHandler, TryBlock);
 4532   CGF.EmitBlock(TryBlock);
 4533   CGF.Builder.CreateStore(CGF.Builder.getTrue(), CallTryExitVar);
 4533   CGF.Builder.CreateStore(CGF.Builder.getTrue(), CallTryExitVar);
 4534   CGF.EmitStmt(isTry ? cast<ObjCAtTryStmt>(S).getTryBody()
 4537   CGBuilderTy::InsertPoint TryFallthroughIP = CGF.Builder.saveAndClearIP();
 4540   CGF.EmitBlock(TryHandler);
 4549     CGF.Builder.CreateStore(CGF.Builder.getFalse(), CallTryExitVar);
 4549     CGF.Builder.CreateStore(CGF.Builder.getFalse(), CallTryExitVar);
 4550     CGF.EmitBranchThroughCleanup(FinallyRethrow);
 4557       CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionExtractFn(),
 4562     CGF.ObjCEHValueStack.push_back(Caught);
 4573       PropagatingExnVar = CGF.CreateTempAlloca(Caught->getType(),
 4574                                                CGF.getPointerAlign(),
 4576       CGF.Builder.CreateStore(Caught, PropagatingExnVar);
 4580       CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionTryEnterFn(),
 4584         CGF.EmitNounwindRuntimeCall(ObjCTypes.getSetJmpFn(),
 4589         CGF.Builder.CreateIsNotNull(SetJmpResult, "did_catch_exception");
 4591       CatchBlock = CGF.createBasicBlock("catch");
 4592       CatchHandler = CGF.createBasicBlock("catch_for_catch");
 4593       CGF.Builder.CreateCondBr(Threw, CatchHandler, CatchBlock);
 4595       CGF.EmitBlock(CatchBlock);
 4598     CGF.Builder.CreateStore(CGF.Builder.getInt1(HasFinally), CallTryExitVar);
 4598     CGF.Builder.CreateStore(CGF.Builder.getInt1(HasFinally), CallTryExitVar);
 4626         CodeGenFunction::RunCleanupsScope CatchVarCleanups(CGF);
 4629           CGF.EmitAutoVarDecl(*CatchParam);
 4630           assert(CGF.HaveInsertPoint() && "DeclStmt destroyed insert point?");
 4633           EmitInitOfCatchParam(CGF, Caught, CatchParam);
 4636         CGF.EmitStmt(CatchStmt->getCatchBody());
 4641         CGF.EmitBranchThroughCleanup(FinallyEnd);
 4653       llvm::Value *Class = EmitClassRef(CGF, IDecl);
 4657         CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionMatchFn(),
 4660       llvm::BasicBlock *MatchedBlock = CGF.createBasicBlock("match");
 4661       llvm::BasicBlock *NextCatchBlock = CGF.createBasicBlock("catch.next");
 4663       CGF.Builder.CreateCondBr(CGF.Builder.CreateIsNotNull(Match, "matched"),
 4663       CGF.Builder.CreateCondBr(CGF.Builder.CreateIsNotNull(Match, "matched"),
 4667       CGF.EmitBlock(MatchedBlock);
 4671       CodeGenFunction::RunCleanupsScope CatchVarCleanups(CGF);
 4673       CGF.EmitAutoVarDecl(*CatchParam);
 4674       assert(CGF.HaveInsertPoint() && "DeclStmt destroyed insert point?");
 4678         CGF.Builder.CreateBitCast(Caught,
 4679                                   CGF.ConvertType(CatchParam->getType()));
 4680       EmitInitOfCatchParam(CGF, Tmp, CatchParam);
 4682       CGF.EmitStmt(CatchStmt->getCatchBody());
 4687       CGF.EmitBranchThroughCleanup(FinallyEnd);
 4689       CGF.EmitBlock(NextCatchBlock);
 4692     CGF.ObjCEHValueStack.pop_back();
 4700       CGF.EmitBranchThroughCleanup(FinallyRethrow);
 4704       CGF.EmitBlock(CatchHandler);
 4715         CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionExtractFn(),
 4717       CGF.Builder.CreateStore(NewCaught, PropagatingExnVar);
 4720       CGF.Builder.CreateStore(CGF.Builder.getFalse(), CallTryExitVar);
 4720       CGF.Builder.CreateStore(CGF.Builder.getFalse(), CallTryExitVar);
 4721       CGF.EmitBranchThroughCleanup(FinallyRethrow);
 4729   CGF.Builder.restoreIP(TryFallthroughIP);
 4730   if (CGF.HaveInsertPoint())
 4731     CGF.Builder.CreateStore(CGF.Builder.getTrue(), CallTryExitVar);
 4731     CGF.Builder.CreateStore(CGF.Builder.getTrue(), CallTryExitVar);
 4732   CGF.PopCleanupBlock();
 4733   CGF.EmitBlock(FinallyEnd.getBlock(), true);
 4736   CGBuilderTy::InsertPoint SavedIP = CGF.Builder.saveAndClearIP();
 4737   CGF.EmitBlock(FinallyRethrow.getBlock(), true);
 4738   if (CGF.HaveInsertPoint()) {
 4742       PropagatingExn = CGF.Builder.CreateLoad(PropagatingExnVar);
 4747         CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionExtractFn(),
 4752     CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionThrowFn(),
 4754     CGF.Builder.CreateUnreachable();
 4757   CGF.Builder.restoreIP(SavedIP);