Lines Matching defs:CGF
35 DominatingValue<RValue>::saved_type::save(CodeGenFunction &CGF, RValue rv) {
38 return saved_type(DominatingLLVMValue::save(CGF, V),
45 return saved_type(DominatingLLVMValue::save(CGF, V.first),
46 DominatingLLVMValue::save(CGF, V.second));
51 return saved_type(DominatingValue<Address>::save(CGF, V),
60 RValue DominatingValue<RValue>::saved_type::restore(CodeGenFunction &CGF) {
64 return RValue::get(DominatingLLVMValue::restore(CGF, Vals.first));
68 DominatingValue<Address>::restore(CGF, AggregateAddr));
70 llvm::Value *real = DominatingLLVMValue::restore(CGF, Vals.first);
71 llvm::Value *imag = DominatingLLVMValue::restore(CGF, Vals.second);
186 if (CGF->getLangOpts().EHAsynch && IsEHCleanup && !IsLifetimeMarker &&
187 CGF->getTarget().getCXXABI().isMicrosoft() && CGF->getInvokeDest())
188 CGF->EmitSehCppScopeBegin();
297 CodeGenFunction &CGF) {
298 auto store = new llvm::StoreInst(value, addr.emitRawPointer(CGF), beforeInst);
304 CodeGenFunction &CGF) {
305 return new llvm::LoadInst(addr.getElementType(), addr.emitRawPointer(CGF),
313 static void ResolveAllBranchFixups(CodeGenFunction &CGF,
318 for (unsigned I = 0, E = CGF.EHStack.getNumBranchFixups(); I != E; ++I) {
320 BranchFixup &Fixup = CGF.EHStack.getBranchFixup(I);
332 createStoreInstBefore(CGF.Builder.getInt32(Fixup.DestinationIndex),
333 CGF.getNormalCleanupDestSlot(), Fixup.InitialBranch,
334 CGF);
342 Switch->addCase(CGF.Builder.getInt32(Fixup.DestinationIndex),
346 CGF.EHStack.clearFixups();
351 static llvm::SwitchInst *TransitionToCleanupSwitch(CodeGenFunction &CGF,
360 auto Load = createLoadInstBefore(CGF.getNormalCleanupDestSlot(),
361 "cleanup.dest", Term, CGF);
498 static llvm::BasicBlock *CreateNormalEntry(CodeGenFunction &CGF,
503 Entry = CGF.createBasicBlock("cleanup");
514 static llvm::BasicBlock *SimplifyCleanupEntry(CodeGenFunction &CGF,
526 bool WasInsertBlock = CGF.Builder.GetInsertBlock() == Entry;
527 assert(!WasInsertBlock || CGF.Builder.GetInsertPoint() == Entry->end());
543 CGF.Builder.SetInsertPoint(Pred);
548 static void EmitCleanup(CodeGenFunction &CGF,
556 ContBB = CGF.createBasicBlock("cleanup.done");
557 llvm::BasicBlock *CleanupBB = CGF.createBasicBlock("cleanup.action");
559 = CGF.Builder.CreateLoad(ActiveFlag, "cleanup.is_active");
560 CGF.Builder.CreateCondBr(IsActive, CleanupBB, ContBB);
561 CGF.EmitBlock(CleanupBB);
565 Fn->Emit(CGF, flags);
566 assert(CGF.HaveInsertPoint() && "cleanup ended with no insertion point?");
570 CGF.EmitBlock(ContBB);
597 static void destroyOptimisticNormalEntry(CodeGenFunction &CGF,
603 llvm::BasicBlock *unreachableBB = CGF.getUnreachableBlock();
624 assert(condition->getOperand(0) == CGF.NormalCleanupDest.getPointer());
1203 static void SetupCleanupBlockActivation(CodeGenFunction &CGF,
1207 EHCleanupScope &Scope = cast<EHCleanupScope>(*CGF.EHStack.find(C));
1213 (kind == ForActivation && CGF.isInConditionalBranch());
1227 (isActivatedInConditional || IsUsedAsEHCleanup(CGF.EHStack, C))) {
1238 CodeGenFunction::AllocaTrackerRAII AllocaTracker(CGF);
1239 var = CGF.CreateTempAlloca(CGF.Builder.getInt1Ty(), CharUnits::One(),
1248 llvm::Constant *value = CGF.Builder.getInt1(kind == ForDeactivation);
1252 if (CGF.isInConditionalBranch()) {
1253 CGF.setBeforeOutermostConditional(value, var, CGF);
1255 createStoreInstBefore(value, var, dominatingIP, CGF);
1259 CGF.Builder.CreateStore(CGF.Builder.getInt1(kind == ForActivation), var);
1313 static void EmitSehScope(CodeGenFunction &CGF,
1315 llvm::BasicBlock *InvokeDest = CGF.getInvokeDest();
1316 assert(CGF.Builder.GetInsertBlock() && InvokeDest);
1317 llvm::BasicBlock *Cont = CGF.createBasicBlock("invoke.cont");
1319 CGF.getBundlesForFunclet(SehCppScope.getCallee());
1320 if (CGF.CurrentFuncletPad)
1321 BundleList.emplace_back("funclet", CGF.CurrentFuncletPad);
1322 CGF.Builder.CreateInvoke(SehCppScope, Cont, InvokeDest, std::nullopt,
1324 CGF.EmitBlock(Cont);