reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
150 Cont = CGF.getJumpDestInCurrentScope("eh.cont"); 152 bool useFunclets = EHPersonality::get(CGF).usesFuncletPads(); 157 FinallyInfo.enter(CGF, Finally->getFinallyBody(), 173 Handler.Block = CGF.createBasicBlock("catch"); 188 EHCatchScope *Catch = CGF.EHStack.pushCatch(Handlers.size()); 196 if (!CGF.CurSEHParent) 197 CGF.CurSEHParent = cast<NamedDecl>(CGF.CurFuncDecl); 197 CGF.CurSEHParent = cast<NamedDecl>(CGF.CurFuncDecl); 200 HelperCGF.startOutlinedSEHHelper(CGF, /*isFilter*/false, FinallyBlock); 211 CGF.pushSEHCleanup(NormalAndEHCleanup, FinallyFunc); 216 CGF.EmitStmt(S.getTryBody()); 220 CGF.popCatchScope(); 223 CGBuilderTy::InsertPoint SavedIP = CGF.Builder.saveAndClearIP(); 229 CGF.EmitBlock(Handler.Block); 231 SaveAndRestore<llvm::Instruction *> RestoreCurrentFuncletPad(CGF.CurrentFuncletPad); 234 CGF.CurrentFuncletPad = CPI; 235 CPI->setOperand(2, CGF.getExceptionSlot().getPointer()); 237 llvm::Value *RawExn = CGF.getExceptionFromSlot(); 242 Exn = CGF.EmitNounwindRuntimeCall(beginCatchFn, RawExn, "exn.adjusted"); 244 CodeGenFunction::LexicalScope cleanups(CGF, Handler.Body->getSourceRange()); 250 CGF.EHStack.pushCleanup<CallObjCEndCatch>(NormalAndEHCleanup, 257 llvm::Type *CatchType = CGF.ConvertType(CatchParam->getType()); 258 llvm::Value *CastExn = CGF.Builder.CreateBitCast(Exn, CatchType); 260 CGF.EmitAutoVarDecl(*CatchParam); 261 EmitInitOfCatchParam(CGF, CastExn, CatchParam); 264 CGF.EHStack.pushCleanup<CatchRetScope>(NormalCleanup, CPI); 266 CGF.ObjCEHValueStack.push_back(Exn); 267 CGF.EmitStmt(Handler.Body); 268 CGF.ObjCEHValueStack.pop_back(); 273 CGF.EmitBranchThroughCleanup(Cont); 277 CGF.Builder.restoreIP(SavedIP); 281 FinallyInfo.exit(CGF); 284 CGF.EmitBlock(Cont.getBlock());