Lines Matching refs:IB

36 void IRMutationStrategy::mutate(Module &M, RandomIRBuilder &IB) {  in mutate()  argument
37 auto RS = makeSampler<Function *>(IB.Rand); in mutate()
42 while (RS.totalWeight() < IB.MinFunctionNum) { in mutate()
43 Function *F = IB.createFunctionDefinition(M); in mutate()
46 mutate(*RS.getSelection(), IB); in mutate()
49 void IRMutationStrategy::mutate(Function &F, RandomIRBuilder &IB) { in mutate() argument
53 mutate(*makeSampler(IB.Rand, Range).getSelection(), IB); in mutate()
56 void IRMutationStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) { in mutate() argument
57 mutate(*makeSampler(IB.Rand, make_pointer_range(BB)).getSelection(), IB); in mutate()
68 RandomIRBuilder IB(Seed, Types); in mutateModule() local
71 auto RS = makeSampler<IRMutationStrategy *>(IB.Rand); in mutateModule()
79 Strategy->mutate(M, IB); in mutateModule()
91 void InjectorIRStrategy::mutate(Function &F, RandomIRBuilder &IB) { in mutate() argument
92 IRMutationStrategy::mutate(F, IB); in mutate()
108 InjectorIRStrategy::chooseOperation(Value *Src, RandomIRBuilder &IB) { in chooseOperation() argument
112 auto RS = makeSampler(IB.Rand, make_filter_range(Operations, OpMatchesPred)); in chooseOperation()
124 void InjectorIRStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) { in mutate() argument
132 size_t IP = uniform<size_t>(IB.Rand, 0, Insts.size() - 1); in mutate()
139 Srcs.push_back(IB.findOrCreateSource(BB, InstsBefore)); in mutate()
143 auto OpDesc = chooseOperation(Srcs[0], IB); in mutate()
149 Srcs.push_back(IB.findOrCreateSource(BB, InstsBefore, Srcs, Pred)); in mutate()
153 IB.connectToSink(BB, InstsAfter, Op); in mutate()
174 void InstDeleterIRStrategy::mutate(Function &F, RandomIRBuilder &IB) { in mutate() argument
175 auto RS = makeSampler<Instruction *>(IB.Rand); in mutate()
188 mutate(*RS.getSelection(), IB); in mutate()
193 void InstDeleterIRStrategy::mutate(Instruction &Inst, RandomIRBuilder &IB) { in mutate() argument
206 auto RS = makeSampler<Value *>(IB.Rand); in mutate()
216 RS.sample(IB.newSource(*BB, InstsBefore, {}, Pred), /*Weight=*/1); in mutate()
223 RandomIRBuilder &IB) { in mutate() argument
343 auto RS = makeSampler(IB.Rand, Modifications); in mutate()
351 uint64_t MaxValue, RandomIRBuilder &IB) { in getUniqueCaseValue() argument
354 tmp = uniform<uint64_t>(IB.Rand, 0, MaxValue); in getUniqueCaseValue()
360 void InsertFunctionStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) { in mutate() argument
368 auto RS = makeSampler(IB.Rand, Functions); in mutate()
379 F = IB.createFunctionDeclaration(*M); in mutate()
405 uint64_t IP = uniform<uint64_t>(IB.Rand, 0, Insts.size() - 1); in mutate()
414 Srcs.push_back(IB.findOrCreateSource(BB, InstsBefore, Srcs, Pred)); in mutate()
419 IB.connectToSink(BB, InstsAfter, Op); in mutate()
423 void InsertCFGStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) { in mutate() argument
431 uint64_t IP = uniform<uint64_t>(IB.Rand, 0, Insts.size() - 1); in mutate()
444 if (uniform<uint64_t>(IB.Rand, 0, 1)) { in mutate()
449 IB.findOrCreateSource(*Source, InstsBeforeSplit, {}, in mutate()
455 connectBlocksToSink({IfTrue, IfFalse}, Sink, IB); in mutate()
460 makeSampler(IB.Rand, make_filter_range(IB.KnownTypes, [](Type *Ty) { in mutate()
472 Value *Cond = IB.findOrCreateSource(*Source, InstsBeforeSplit, {}, in mutate()
475 uint64_t NumCases = uniform<uint64_t>(IB.Rand, 1, MaxNumCases); in mutate()
485 uint64_t CaseVal = getUniqueCaseValue(CasesTaken, MaxCaseVal, IB); in mutate()
493 connectBlocksToSink(Blocks, Sink, IB); in mutate()
501 RandomIRBuilder &IB) { in connectBlocksToSink() argument
502 uint64_t DirectSinkIdx = uniform<uint64_t>(IB.Rand, 0, Blocks.size() - 1); in connectBlocksToSink()
508 IB.Rand, 0, CFGToSink::EndOfCFGToLink - 1)); in connectBlocksToSink()
518 IB.findOrCreateSource(*BB, {}, {}, fuzzerop::onlyType(RetTy)); in connectBlocksToSink()
529 uint64_t coin = uniform<uint64_t>(IB.Rand, 0, 1); in connectBlocksToSink()
530 Value *Cond = IB.findOrCreateSource( in connectBlocksToSink()
541 void InsertPHIStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) { in mutate() argument
545 Type *Ty = IB.randomType(); in mutate()
559 Src = IB.findOrCreateSource(*Pred, Insts, {}, fuzzerop::onlyType(Ty)); in mutate()
567 IB.connectToSink(BB, InstsAfter, PHI); in mutate()
570 void SinkInstructionStrategy::mutate(Function &F, RandomIRBuilder &IB) { in mutate() argument
572 this->mutate(BB, IB); in mutate()
575 void SinkInstructionStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) { in mutate() argument
582 uint64_t Idx = uniform<uint64_t>(IB.Rand, 0, Insts.size() - 1); in mutate()
590 IB.connectToSink(BB, InstsAfter, Inst); in mutate()
593 void ShuffleBlockStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) { in mutate() argument
640 auto RS = makeSampler<size_t>(IB.Rand); in mutate()