Lines Matching defs:Builder
62 void linkExceptionRegistration(IRBuilder<> &Builder, Function *Handler);
63 void unlinkExceptionRegistration(IRBuilder<> &Builder);
67 Value *emitEHLSDA(IRBuilder<> &Builder, Function *F);
72 void rewriteSetJmpCall(IRBuilder<> &Builder, Function &F, CallBase &Call,
279 IRBuilder<> Builder(&F->getEntryBlock(), F->getEntryBlock().begin());
280 Type *Int8PtrType = Builder.getPtrTy();
281 Type *Int32Ty = Builder.getInt32Ty();
282 Type *VoidTy = Builder.getVoidTy();
286 RegNode = Builder.CreateAlloca(RegNodeTy);
288 Value *SP = Builder.CreateStackSave();
289 Builder.CreateStore(SP, Builder.CreateStructGEP(RegNodeTy, RegNode, 0));
293 insertStateNumberStore(&*Builder.GetInsertPoint(), ParentBaseState);
296 Link = Builder.CreateStructGEP(RegNodeTy, RegNode, 1);
297 linkExceptionRegistration(Builder, Trampoline);
312 RegNode = Builder.CreateAlloca(RegNodeTy);
314 EHGuardNode = Builder.CreateAlloca(Int32Ty);
317 Value *SP = Builder.CreateStackSave();
318 Builder.CreateStore(SP, Builder.CreateStructGEP(RegNodeTy, RegNode, 0));
322 insertStateNumberStore(&*Builder.GetInsertPoint(), ParentBaseState);
324 Value *LSDA = emitEHLSDA(Builder, F);
325 LSDA = Builder.CreatePtrToInt(LSDA, Int32Ty);
330 Value *Val = Builder.CreateLoad(Int32Ty, Cookie, "cookie");
331 LSDA = Builder.CreateXor(LSDA, Val);
333 Builder.CreateStore(LSDA, Builder.CreateStructGEP(RegNodeTy, RegNode, 3));
337 Value *Val = Builder.CreateLoad(Int32Ty, Cookie);
338 Value *FrameAddr = Builder.CreateIntrinsic(
340 Builder.getPtrTy(TheModule->getDataLayout().getAllocaAddrSpace()),
341 Builder.getInt32(0), /*FMFSource=*/nullptr, "frameaddr");
342 Value *FrameAddrI32 = Builder.CreatePtrToInt(FrameAddr, Int32Ty);
343 FrameAddrI32 = Builder.CreateXor(FrameAddrI32, Val);
344 Builder.CreateStore(FrameAddrI32, EHGuardNode);
348 Link = Builder.CreateStructGEP(RegNodeTy, RegNode, 2);
349 linkExceptionRegistration(Builder, PersonalityFn);
371 Builder.SetInsertPoint(T);
372 unlinkExceptionRegistration(Builder);
376 Value *WinEHStatePass::emitEHLSDA(IRBuilder<> &Builder, Function *F) {
377 return Builder.CreateIntrinsic(Intrinsic::x86_seh_lsda, {}, F);
407 IRBuilder<> Builder(EntryBB);
408 Value *LSDA = emitEHLSDA(Builder, ParentFunc);
411 CallInst *Call = Builder.CreateCall(TargetFuncTy, PersonalityFn, Args);
416 Builder.CreateRet(Call);
420 void WinEHStatePass::linkExceptionRegistration(IRBuilder<> &Builder,
425 LLVMContext &C = Builder.getContext();
428 Builder.CreateStore(Handler, Builder.CreateStructGEP(LinkTy, Link, 1));
431 Value *Next = Builder.CreateLoad(PointerType::getUnqual(C), FSZero);
432 Builder.CreateStore(Next, Builder.CreateStructGEP(LinkTy, Link, 0));
434 Builder.CreateStore(Link, FSZero);
437 void WinEHStatePass::unlinkExceptionRegistration(IRBuilder<> &Builder) {
441 Builder.Insert(GEP);
445 LLVMContext &C = Builder.getContext();
448 Value *Next = Builder.CreateLoad(PointerType::getUnqual(C),
449 Builder.CreateStructGEP(LinkTy, Link, 0));
451 Builder.CreateStore(Next, FSZero);
458 void WinEHStatePass::rewriteSetJmpCall(IRBuilder<> &Builder, Function &F,
471 OptionalArgs.push_back(emitEHLSDA(Builder, &F));
483 Builder.CreateBitCast(Call.getArgOperand(0), Builder.getPtrTy()));
484 Args.push_back(Builder.getInt32(OptionalArgs.size()));
489 CallInst *NewCI = Builder.CreateCall(SetJmp3, Args, OpBundles);
494 NewCall = Builder.CreateInvoke(SetJmp3, II->getNormalDest(),
650 IRBuilder<> Builder(RegNode->getNextNode());
651 Value *RegNodeI8 = Builder.CreateBitCast(RegNode, Builder.getPtrTy());
652 Builder.CreateIntrinsic(Intrinsic::x86_seh_ehregnode, {}, {RegNodeI8});
655 IRBuilder<> Builder(EHGuardNode->getNextNode());
657 Builder.CreateBitCast(EHGuardNode, Builder.getPtrTy());
658 Builder.CreateIntrinsic(Intrinsic::x86_seh_ehguard, {}, {EHGuardNodeI8});
788 IRBuilder<> Builder(Call);
791 Value *StateField = Builder.CreateStructGEP(RegNode->getAllocatedType(),
793 State = Builder.CreateLoad(Builder.getInt32Ty(), StateField);
795 State = Builder.getInt32(getStateForCall(BlockColors, FuncInfo, *Call));
797 rewriteSetJmpCall(Builder, F, *Call, State);
802 IRBuilder<> Builder(IP);
803 Value *StateField = Builder.CreateStructGEP(RegNode->getAllocatedType(),
805 Builder.CreateStore(Builder.getInt32(State), StateField);
814 IRBuilder<> Builder(Alloca->getNextNonDebugInstruction());
816 Value *SP = Builder.CreateStackSave();
817 Builder.CreateStore(SP, Builder.CreateStructGEP(RegNodeTy, RegNode, 0));
823 IRBuilder<> Builder(II->getNextNonDebugInstruction());
825 Value *SP = Builder.CreateStackSave();
826 Builder.CreateStore(SP, Builder.CreateStructGEP(RegNodeTy, RegNode, 0));