Lines Matching refs:IB

35 void IRMutationStrategy::mutate(Module &M, RandomIRBuilder &IB) {  in mutate()  argument
36 auto RS = makeSampler<Function *>(IB.Rand); in mutate()
41 while (RS.totalWeight() < IB.MinFunctionNum) { in mutate()
42 Function *F = IB.createFunctionDefinition(M); in mutate()
45 mutate(*RS.getSelection(), IB); in mutate()
48 void IRMutationStrategy::mutate(Function &F, RandomIRBuilder &IB) { in mutate() argument
52 mutate(*makeSampler(IB.Rand, Range).getSelection(), IB); in mutate()
55 void IRMutationStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) { in mutate() argument
56 mutate(*makeSampler(IB.Rand, make_pointer_range(BB)).getSelection(), IB); in mutate()
67 RandomIRBuilder IB(Seed, Types); in mutateModule() local
70 auto RS = makeSampler<IRMutationStrategy *>(IB.Rand); in mutateModule()
78 Strategy->mutate(M, IB); in mutateModule()
90 void InjectorIRStrategy::mutate(Function &F, RandomIRBuilder &IB) { in mutate() argument
91 IRMutationStrategy::mutate(F, IB); in mutate()
107 InjectorIRStrategy::chooseOperation(Value *Src, RandomIRBuilder &IB) { in chooseOperation() argument
111 auto RS = makeSampler(IB.Rand, make_filter_range(Operations, OpMatchesPred)); in chooseOperation()
123 void InjectorIRStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) { in mutate() argument
131 size_t IP = uniform<size_t>(IB.Rand, 0, Insts.size() - 1); in mutate()
138 Srcs.push_back(IB.findOrCreateSource(BB, InstsBefore)); in mutate()
142 auto OpDesc = chooseOperation(Srcs[0], IB); in mutate()
148 Srcs.push_back(IB.findOrCreateSource(BB, InstsBefore, Srcs, Pred)); in mutate()
152 IB.connectToSink(BB, InstsAfter, Op); in mutate()
173 void InstDeleterIRStrategy::mutate(Function &F, RandomIRBuilder &IB) { in mutate() argument
174 auto RS = makeSampler<Instruction *>(IB.Rand); in mutate()
187 mutate(*RS.getSelection(), IB); in mutate()
192 void InstDeleterIRStrategy::mutate(Instruction &Inst, RandomIRBuilder &IB) { in mutate() argument
205 auto RS = makeSampler<Value *>(IB.Rand); in mutate()
215 RS.sample(IB.newSource(*BB, InstsBefore, {}, Pred), /*Weight=*/1); in mutate()
222 RandomIRBuilder &IB) { in mutate() argument
342 auto RS = makeSampler(IB.Rand, Modifications); in mutate()
350 uint64_t MaxValue, RandomIRBuilder &IB) { in getUniqueCaseValue() argument
353 tmp = uniform<uint64_t>(IB.Rand, 0, MaxValue); in getUniqueCaseValue()
359 void InsertFunctionStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) { in mutate() argument
367 auto RS = makeSampler(IB.Rand, Functions); in mutate()
378 F = IB.createFunctionDeclaration(*M); in mutate()
404 uint64_t IP = uniform<uint64_t>(IB.Rand, 0, Insts.size() - 1); in mutate()
413 Srcs.push_back(IB.findOrCreateSource(BB, InstsBefore, Srcs, Pred)); in mutate()
418 IB.connectToSink(BB, InstsAfter, Op); in mutate()
422 void InsertCFGStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) { in mutate() argument
430 uint64_t IP = uniform<uint64_t>(IB.Rand, 0, Insts.size() - 1); in mutate()
443 if (uniform<uint64_t>(IB.Rand, 0, 1)) { in mutate()
448 IB.findOrCreateSource(*Source, InstsBeforeSplit, {}, in mutate()
454 connectBlocksToSink({IfTrue, IfFalse}, Sink, IB); in mutate()
459 makeSampler(IB.Rand, make_filter_range(IB.KnownTypes, [](Type *Ty) { in mutate()
471 Value *Cond = IB.findOrCreateSource(*Source, InstsBeforeSplit, {}, in mutate()
474 uint64_t NumCases = uniform<uint64_t>(IB.Rand, 1, MaxNumCases); in mutate()
484 uint64_t CaseVal = getUniqueCaseValue(CasesTaken, MaxCaseVal, IB); in mutate()
492 connectBlocksToSink(Blocks, Sink, IB); in mutate()
500 RandomIRBuilder &IB) { in connectBlocksToSink() argument
501 uint64_t DirectSinkIdx = uniform<uint64_t>(IB.Rand, 0, Blocks.size() - 1); in connectBlocksToSink()
507 IB.Rand, 0, CFGToSink::EndOfCFGToLink - 1)); in connectBlocksToSink()
517 IB.findOrCreateSource(*BB, {}, {}, fuzzerop::onlyType(RetTy)); in connectBlocksToSink()
528 uint64_t coin = uniform<uint64_t>(IB.Rand, 0, 1); in connectBlocksToSink()
529 Value *Cond = IB.findOrCreateSource( in connectBlocksToSink()
540 void InsertPHIStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) { in mutate() argument
544 Type *Ty = IB.randomType(); in mutate()
558 Src = IB.findOrCreateSource(*Pred, Insts, {}, fuzzerop::onlyType(Ty)); in mutate()
566 IB.connectToSink(BB, InstsAfter, PHI); in mutate()
569 void SinkInstructionStrategy::mutate(Function &F, RandomIRBuilder &IB) { in mutate() argument
571 this->mutate(BB, IB); in mutate()
574 void SinkInstructionStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) { in mutate() argument
581 uint64_t Idx = uniform<uint64_t>(IB.Rand, 0, Insts.size() - 1); in mutate()
589 IB.connectToSink(BB, InstsAfter, Inst); in mutate()
592 void ShuffleBlockStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) { in mutate() argument
639 auto RS = makeSampler<size_t>(IB.Rand); in mutate()