struct RandomIRBuilder

Declaration

struct RandomIRBuilder { /* full declaration omitted */ };

Declared at: llvm/include/llvm/FuzzMutate/RandomIRBuilder.h:32

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)

Declared at: llvm/include/llvm/FuzzMutate/RandomIRBuilder.h:36

Parameters

int Seed
ArrayRef<llvm::Type*> AllowedTypes

llvm::Type* chooseType(
    llvm::LLVMContext& Context,
    ArrayRef<llvm::Value*> Srcs,
    fuzzerop::SourcePred Pred)

Declared at: llvm/include/llvm/FuzzMutate/RandomIRBuilder.h:62

Parameters

llvm::LLVMContext& Context
ArrayRef<llvm::Value*> Srcs
fuzzerop::SourcePred Pred

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:57

Parameters

llvm::BasicBlock& BB
ArrayRef<llvm::Instruction*> Insts
llvm::Value* V

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:44

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)

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:50

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)

Declared at: llvm/include/llvm/FuzzMutate/RandomIRBuilder.h:60

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)

Description

Create a user for \c V in \c BB.

Declared at: llvm/include/llvm/FuzzMutate/RandomIRBuilder.h:59

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)

Description

Create some Value suitable as a source for some operation.

Declared at: llvm/include/llvm/FuzzMutate/RandomIRBuilder.h:53

Parameters

llvm::BasicBlock& BB
ArrayRef<llvm::Instruction*> Insts
ArrayRef<llvm::Value*> Srcs
fuzzerop::SourcePred Pred