reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
182 CodeGenFunction::OpaqueValueMappingData::bind(CGF, S.getOpaqueValue(), E); 183 auto UnbindOnExit = llvm::make_scope_exit([&] { Binder.unbind(CGF); }); 186 BasicBlock *ReadyBlock = CGF.createBasicBlock(Prefix + Twine(".ready")); 187 BasicBlock *SuspendBlock = CGF.createBasicBlock(Prefix + Twine(".suspend")); 188 BasicBlock *CleanupBlock = CGF.createBasicBlock(Prefix + Twine(".cleanup")); 191 CGF.EmitBranchOnBoolExpr(S.getReadyExpr(), ReadyBlock, SuspendBlock, 0); 194 CGF.EmitBlock(SuspendBlock); 196 auto &Builder = CGF.Builder; 197 llvm::Function *CoroSave = CGF.CGM.getIntrinsic(llvm::Intrinsic::coro_save); 198 auto *NullPtr = llvm::ConstantPointerNull::get(CGF.CGM.Int8PtrTy); 201 auto *SuspendRet = CGF.EmitScalarExpr(S.getSuspendExpr()); 205 CGF.createBasicBlock(Prefix + Twine(".suspend.bool")); 206 CGF.Builder.CreateCondBr(SuspendRet, RealSuspendBlock, ReadyBlock); 207 CGF.EmitBlock(RealSuspendBlock); 213 CGF.CGM.getIntrinsic(llvm::Intrinsic::coro_suspend); 223 CGF.EmitBlock(CleanupBlock); 224 CGF.EmitBranchThroughCleanup(Coro.CleanupJD); 227 CGF.EmitBlock(ReadyBlock); 235 CGF.CreateTempAlloca(Builder.getInt1Ty(), Prefix + Twine("resume.eh")); 239 auto *Catch = new (CGF.getContext()) 242 CompoundStmt::Create(CGF.getContext(), S.getResumeExpr(), Loc, Loc); 243 TryStmt = CXXTryStmt::Create(CGF.getContext(), Loc, TryBody, Catch); 244 CGF.EnterCXXTryStmt(*TryStmt); 249 Res.LV = CGF.EmitLValue(S.getResumeExpr()); 251 Res.RV = CGF.EmitAnyExpr(S.getResumeExpr(), aggSlot, ignoreResult); 255 CGF.ExitCXXTryStmt(*TryStmt);