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);
193 if (CGF->getLangOpts().EHAsynch && IsEHCleanup && !IsLifetimeMarker &&
194 CGF->getTarget().getCXXABI().isMicrosoft() && CGF->getInvokeDest())
195 CGF->EmitSehCppScopeBegin();
304 CodeGenFunction &CGF) {
305 auto store = new llvm::StoreInst(value, addr.emitRawPointer(CGF), beforeInst);
312 CodeGenFunction &CGF) {
313 return new llvm::LoadInst(addr.getElementType(), addr.emitRawPointer(CGF),
319 CodeGenFunction &CGF) {
320 return new llvm::LoadInst(addr.getElementType(), addr.emitRawPointer(CGF),
327 static void ResolveAllBranchFixups(CodeGenFunction &CGF,
332 for (unsigned I = 0, E = CGF.EHStack.getNumBranchFixups(); I != E; ++I) {
334 BranchFixup &Fixup = CGF.EHStack.getBranchFixup(I);
346 createStoreInstBefore(CGF.Builder.getInt32(Fixup.DestinationIndex),
347 CGF.getNormalCleanupDestSlot(),
348 Fixup.InitialBranch->getIterator(), CGF);
356 Switch->addCase(CGF.Builder.getInt32(Fixup.DestinationIndex),
360 CGF.EHStack.clearFixups();
365 static llvm::SwitchInst *TransitionToCleanupSwitch(CodeGenFunction &CGF,
374 auto Load = createLoadInstBefore(CGF.getNormalCleanupDestSlot(),
375 "cleanup.dest", Term->getIterator(), CGF);
512 static llvm::BasicBlock *CreateNormalEntry(CodeGenFunction &CGF,
517 Entry = CGF.createBasicBlock("cleanup");
528 static llvm::BasicBlock *SimplifyCleanupEntry(CodeGenFunction &CGF,
540 bool WasInsertBlock = CGF.Builder.GetInsertBlock() == Entry;
541 assert(!WasInsertBlock || CGF.Builder.GetInsertPoint() == Entry->end());
557 CGF.Builder.SetInsertPoint(Pred);
562 static void EmitCleanup(CodeGenFunction &CGF,
570 ContBB = CGF.createBasicBlock("cleanup.done");
571 llvm::BasicBlock *CleanupBB = CGF.createBasicBlock("cleanup.action");
573 = CGF.Builder.CreateLoad(ActiveFlag, "cleanup.is_active");
574 CGF.Builder.CreateCondBr(IsActive, CleanupBB, ContBB);
575 CGF.EmitBlock(CleanupBB);
579 Fn->Emit(CGF, flags);
580 assert(CGF.HaveInsertPoint() && "cleanup ended with no insertion point?");
584 CGF.EmitBlock(ContBB);
611 static void destroyOptimisticNormalEntry(CodeGenFunction &CGF,
617 llvm::BasicBlock *unreachableBB = CGF.getUnreachableBlock();
639 assert(condition->getOperand(0) == CGF.NormalCleanupDest.getPointer());
1220 static void SetupCleanupBlockActivation(CodeGenFunction &CGF,
1224 EHCleanupScope &Scope = cast<EHCleanupScope>(*CGF.EHStack.find(C));
1230 (kind == ForActivation && CGF.isInConditionalBranch());
1244 (isActivatedInConditional || IsUsedAsEHCleanup(CGF.EHStack, C))) {
1255 CodeGenFunction::AllocaTrackerRAII AllocaTracker(CGF);
1256 var = CGF.CreateTempAlloca(CGF.Builder.getInt1Ty(), CharUnits::One(),
1265 llvm::Constant *value = CGF.Builder.getInt1(kind == ForDeactivation);
1269 if (CGF.isInConditionalBranch()) {
1270 CGF.setBeforeOutermostConditional(value, var, CGF);
1272 createStoreInstBefore(value, var, dominatingIP->getIterator(), CGF);
1276 CGF.Builder.CreateStore(CGF.Builder.getInt1(kind == ForActivation), var);
1330 static void EmitSehScope(CodeGenFunction &CGF,
1332 llvm::BasicBlock *InvokeDest = CGF.getInvokeDest();
1333 assert(CGF.Builder.GetInsertBlock() && InvokeDest);
1334 llvm::BasicBlock *Cont = CGF.createBasicBlock("invoke.cont");
1336 CGF.getBundlesForFunclet(SehCppScope.getCallee());
1337 if (CGF.CurrentFuncletPad)
1338 BundleList.emplace_back("funclet", CGF.CurrentFuncletPad);
1339 CGF.Builder.CreateInvoke(SehCppScope, Cont, InvokeDest, {}, BundleList);
1340 CGF.EmitBlock(Cont);