Lines Matching defs:IRB

133   Value *getStackGuard(IRBuilder<> &IRB, Function &F);
136 void checkStackGuard(IRBuilder<> &IRB, Function &F, Instruction &RI,
157 Value *moveStaticAllocasToUnsafeStack(IRBuilder<> &IRB, Function &F,
169 createStackRestorePoints(IRBuilder<> &IRB, Function &F,
364 Value *SafeStack::getStackGuard(IRBuilder<> &IRB, Function &F) {
365 Value *StackGuardVar = TL.getIRStackGuard(IRB);
370 return IRB.CreateIntrinsic(Intrinsic::stackguard, {}, {});
373 return IRB.CreateLoad(StackPtrTy, StackGuardVar, "StackGuard");
428 SafeStack::createStackRestorePoints(IRBuilder<> &IRB, Function &F,
446 DynamicTop = IRB.CreateAlloca(StackPtrTy, /*ArraySize=*/nullptr,
448 IRB.CreateStore(StaticTop, DynamicTop);
455 IRB.SetInsertPoint(I->getNextNode());
457 DynamicTop ? IRB.CreateLoad(StackPtrTy, DynamicTop) : StaticTop;
458 IRB.CreateStore(CurrentTop, UnsafeStackPtr);
464 void SafeStack::checkStackGuard(IRBuilder<> &IRB, Function &F, Instruction &RI,
466 Value *V = IRB.CreateLoad(StackPtrTy, StackGuardSlot);
467 Value *Cmp = IRB.CreateICmpNE(StackGuard, V);
479 F.getParent()->getOrInsertFunction("__stack_chk_fail", IRB.getVoidTy());
487 IRBuilder<> &IRB, Function &F, ArrayRef<AllocaInst *> StaticAllocas,
550 IRB.SetInsertPoint(BasePointer->getNextNode());
551 BasePointer = cast<Instruction>(IRB.CreateIntToPtr(
552 IRB.CreateAnd(
553 IRB.CreatePtrToInt(BasePointer, IntPtrTy),
558 IRB.SetInsertPoint(BasePointer->getNextNode());
563 IRB.CreatePtrAdd(BasePointer, ConstantInt::get(Int32Ty, -Offset));
565 IRB.CreateBitCast(Off, StackGuardSlot->getType(), "StackGuardSlot");
582 IRB.CreatePtrAdd(BasePointer, ConstantInt::get(Int32Ty, -Offset));
583 Value *NewArg = IRB.CreateBitCast(Off, Arg->getType(),
590 IRB.SetInsertPoint(cast<Instruction>(NewArg)->getNextNode());
591 IRB.CreateMemCpy(Off, Align, Arg, Arg->getParamAlign(), Size);
596 IRB.SetInsertPoint(AI);
645 IRB.SetInsertPoint(BasePointer->getNextNode());
648 IRB.CreatePtrAdd(BasePointer, ConstantInt::get(Int32Ty, -FrameSize),
650 IRB.CreateStore(StaticTop, UnsafeStackPtr);
660 IRBuilder<> IRB(AI);
665 ArraySize = IRB.CreateIntCast(ArraySize, IntPtrTy, false);
669 Value *Size = IRB.CreateMul(ArraySize, ConstantInt::get(IntPtrTy, TySize));
671 Value *SP = IRB.CreatePtrToInt(IRB.CreateLoad(StackPtrTy, UnsafeStackPtr),
673 SP = IRB.CreateSub(SP, Size);
679 Value *NewTop = IRB.CreateIntToPtr(
680 IRB.CreateAnd(SP,
685 IRB.CreateStore(NewTop, UnsafeStackPtr);
687 IRB.CreateStore(NewTop, DynamicTop);
689 Value *NewAI = IRB.CreatePointerCast(NewTop, AI->getType());
706 IRBuilder<> IRB(II);
707 Instruction *LI = IRB.CreateLoad(StackPtrTy, UnsafeStackPtr);
712 IRBuilder<> IRB(II);
713 Instruction *SI = IRB.CreateStore(II->getArgOperand(0), UnsafeStackPtr);
787 IRBuilder<> IRB(&F.front(), F.begin()->getFirstInsertionPt());
791 IRB.SetCurrentDebugLocation(
795 "__safestack_pointer_address", IRB.getPtrTy(0));
796 UnsafeStackPtr = IRB.CreateCall(Fn);
798 UnsafeStackPtr = TL.getSafeStackPointerLocation(IRB);
804 IRB.CreateLoad(StackPtrTy, UnsafeStackPtr, false, "unsafe_stack_ptr");
812 Value *StackGuard = getStackGuard(IRB, F);
813 StackGuardSlot = IRB.CreateAlloca(StackPtrTy, nullptr);
814 IRB.CreateStore(StackGuard, StackGuardSlot);
825 IRB, F, StaticAllocas, ByValArguments, BasePointer, StackGuardSlot);
834 IRB, F, StackRestorePoints, StaticTop, !DynamicAllocas.empty());
842 IRB.SetInsertPoint(RI);
843 IRB.CreateStore(BasePointer, UnsafeStackPtr);