struct RandomIRBuilder
Declaration
struct RandomIRBuilder { /* full declaration omitted */ };
Declared at: llvm/include/llvm/FuzzMutate/RandomIRBuilder.h:25
Member Variables
- public llvm::RandomEngine Rand
- public SmallVector<llvm::Type*, 16> KnownTypes
Method Overview
- public RandomIRBuilder(int Seed, ArrayRef<llvm::Type *> AllowedTypes)
- public llvm::Type * chooseType(llvm::LLVMContext & Context, ArrayRef<llvm::Value *> Srcs, fuzzerop::SourcePred Pred)
- public void connectToSink(llvm::BasicBlock & BB, ArrayRef<llvm::Instruction *> Insts, llvm::Value * V)
- public llvm::Value * findOrCreateSource(llvm::BasicBlock & BB, ArrayRef<llvm::Instruction *> Insts)
- public llvm::Value * findOrCreateSource(llvm::BasicBlock & BB, ArrayRef<llvm::Instruction *> Insts, ArrayRef<llvm::Value *> Srcs, fuzzerop::SourcePred Pred)
- public llvm::Value * findPointer(llvm::BasicBlock & BB, ArrayRef<llvm::Instruction *> Insts, ArrayRef<llvm::Value *> Srcs, fuzzerop::SourcePred Pred)
- public void newSink(llvm::BasicBlock & BB, ArrayRef<llvm::Instruction *> Insts, llvm::Value * V)
- public llvm::Value * newSource(llvm::BasicBlock & BB, ArrayRef<llvm::Instruction *> Insts, ArrayRef<llvm::Value *> Srcs, fuzzerop::SourcePred Pred)
Methods
¶RandomIRBuilder(
int Seed,
ArrayRef<llvm::Type*> AllowedTypes)
RandomIRBuilder(
int Seed,
ArrayRef<llvm::Type*> AllowedTypes)
Declared at: llvm/include/llvm/FuzzMutate/RandomIRBuilder.h:29
Parameters
- int Seed
- ArrayRef<llvm::Type*> AllowedTypes
¶llvm::Type* chooseType(
llvm::LLVMContext& Context,
ArrayRef<llvm::Value*> Srcs,
fuzzerop::SourcePred Pred)
llvm::Type* chooseType(
llvm::LLVMContext& Context,
ArrayRef<llvm::Value*> Srcs,
fuzzerop::SourcePred Pred)
Declared at: llvm/include/llvm/FuzzMutate/RandomIRBuilder.h:55
Parameters
- llvm::LLVMContext& Context
- ArrayRef<llvm::Value*> Srcs
- fuzzerop::SourcePred Pred
¶void connectToSink(
llvm::BasicBlock& BB,
ArrayRef<llvm::Instruction*> Insts,
llvm::Value* V)
void connectToSink(
llvm::BasicBlock& BB,
ArrayRef<llvm::Instruction*> Insts,
llvm::Value* V)
Description
Find a viable user for \c V in \c Insts, which should all be contained in\c BB. This may also create some new instruction in \c BB and use that.
Declared at: llvm/include/llvm/FuzzMutate/RandomIRBuilder.h:50
Parameters
- llvm::BasicBlock& BB
- ArrayRef<llvm::Instruction*> Insts
- llvm::Value* V
¶llvm::Value* findOrCreateSource(
llvm::BasicBlock& BB,
ArrayRef<llvm::Instruction*> Insts)
llvm::Value* findOrCreateSource(
llvm::BasicBlock& BB,
ArrayRef<llvm::Instruction*> Insts)
Description
Find a "source" for some operation, which will be used in one of the operation's operands. This either selects an instruction in \c Insts or returns some new arbitrary Value.
Declared at: llvm/include/llvm/FuzzMutate/RandomIRBuilder.h:37
Parameters
- llvm::BasicBlock& BB
- ArrayRef<llvm::Instruction*> Insts
¶llvm::Value* findOrCreateSource(
llvm::BasicBlock& BB,
ArrayRef<llvm::Instruction*> Insts,
ArrayRef<llvm::Value*> Srcs,
fuzzerop::SourcePred Pred)
llvm::Value* findOrCreateSource(
llvm::BasicBlock& BB,
ArrayRef<llvm::Instruction*> Insts,
ArrayRef<llvm::Value*> Srcs,
fuzzerop::SourcePred Pred)
Description
Find a "source" for some operation, which will be used in one of the operation's operands. This either selects an instruction in \c Insts that matches \c Pred, or returns some new Value that matches \c Pred. The values in \c Srcs should be source operands that have already been selected.
Declared at: llvm/include/llvm/FuzzMutate/RandomIRBuilder.h:43
Parameters
- llvm::BasicBlock& BB
- ArrayRef<llvm::Instruction*> Insts
- ArrayRef<llvm::Value*> Srcs
- fuzzerop::SourcePred Pred
¶llvm::Value* findPointer(
llvm::BasicBlock& BB,
ArrayRef<llvm::Instruction*> Insts,
ArrayRef<llvm::Value*> Srcs,
fuzzerop::SourcePred Pred)
llvm::Value* findPointer(
llvm::BasicBlock& BB,
ArrayRef<llvm::Instruction*> Insts,
ArrayRef<llvm::Value*> Srcs,
fuzzerop::SourcePred Pred)
Declared at: llvm/include/llvm/FuzzMutate/RandomIRBuilder.h:53
Parameters
- llvm::BasicBlock& BB
- ArrayRef<llvm::Instruction*> Insts
- ArrayRef<llvm::Value*> Srcs
- fuzzerop::SourcePred Pred
¶void newSink(llvm::BasicBlock& BB,
ArrayRef<llvm::Instruction*> Insts,
llvm::Value* V)
void newSink(llvm::BasicBlock& BB,
ArrayRef<llvm::Instruction*> Insts,
llvm::Value* V)
Description
Create a user for \c V in \c BB.
Declared at: llvm/include/llvm/FuzzMutate/RandomIRBuilder.h:52
Parameters
- llvm::BasicBlock& BB
- ArrayRef<llvm::Instruction*> Insts
- llvm::Value* V
¶llvm::Value* newSource(
llvm::BasicBlock& BB,
ArrayRef<llvm::Instruction*> Insts,
ArrayRef<llvm::Value*> Srcs,
fuzzerop::SourcePred Pred)
llvm::Value* newSource(
llvm::BasicBlock& BB,
ArrayRef<llvm::Instruction*> Insts,
ArrayRef<llvm::Value*> Srcs,
fuzzerop::SourcePred Pred)
Description
Create some Value suitable as a source for some operation.
Declared at: llvm/include/llvm/FuzzMutate/RandomIRBuilder.h:46
Parameters
- llvm::BasicBlock& BB
- ArrayRef<llvm::Instruction*> Insts
- ArrayRef<llvm::Value*> Srcs
- fuzzerop::SourcePred Pred