Lines Matching defs:IRB
134 Value *getStackGuard(IRBuilder<> &IRB, Function &F);
137 void checkStackGuard(IRBuilder<> &IRB, Function &F, Instruction &RI,
158 Value *moveStaticAllocasToUnsafeStack(IRBuilder<> &IRB, Function &F,
170 createStackRestorePoints(IRBuilder<> &IRB, Function &F,
365 Value *SafeStack::getStackGuard(IRBuilder<> &IRB, Function &F) {
366 Value *StackGuardVar = TL.getIRStackGuard(IRB);
371 return IRB.CreateCall(Intrinsic::getDeclaration(M, Intrinsic::stackguard));
374 return IRB.CreateLoad(StackPtrTy, StackGuardVar, "StackGuard");
429 SafeStack::createStackRestorePoints(IRBuilder<> &IRB, Function &F,
447 DynamicTop = IRB.CreateAlloca(StackPtrTy, /*ArraySize=*/nullptr,
449 IRB.CreateStore(StaticTop, DynamicTop);
456 IRB.SetInsertPoint(I->getNextNode());
458 DynamicTop ? IRB.CreateLoad(StackPtrTy, DynamicTop) : StaticTop;
459 IRB.CreateStore(CurrentTop, UnsafeStackPtr);
465 void SafeStack::checkStackGuard(IRBuilder<> &IRB, Function &F, Instruction &RI,
467 Value *V = IRB.CreateLoad(StackPtrTy, StackGuardSlot);
468 Value *Cmp = IRB.CreateICmpNE(StackGuard, V);
480 F.getParent()->getOrInsertFunction("__stack_chk_fail", IRB.getVoidTy());
488 IRBuilder<> &IRB, Function &F, ArrayRef<AllocaInst *> StaticAllocas,
551 IRB.SetInsertPoint(BasePointer->getNextNode());
552 BasePointer = cast<Instruction>(IRB.CreateIntToPtr(
553 IRB.CreateAnd(
554 IRB.CreatePtrToInt(BasePointer, IntPtrTy),
559 IRB.SetInsertPoint(BasePointer->getNextNode());
564 IRB.CreatePtrAdd(BasePointer, ConstantInt::get(Int32Ty, -Offset));
566 IRB.CreateBitCast(Off, StackGuardSlot->getType(), "StackGuardSlot");
583 IRB.CreatePtrAdd(BasePointer, ConstantInt::get(Int32Ty, -Offset));
584 Value *NewArg = IRB.CreateBitCast(Off, Arg->getType(),
591 IRB.SetInsertPoint(cast<Instruction>(NewArg)->getNextNode());
592 IRB.CreateMemCpy(Off, Align, Arg, Arg->getParamAlign(), Size);
597 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);