LLVM 20.0.0git
|
Strategy that generates new function calls and inserts function signatures to the modules. More...
#include "llvm/FuzzMutate/IRMutator.h"
Public Member Functions | |
uint64_t | getWeight (size_t CurrentSize, size_t MaxSize, uint64_t CurrentWeight) override |
Provide a weight to bias towards choosing this strategy for a mutation. | |
void | mutate (BasicBlock &BB, RandomIRBuilder &IB) override |
virtual void | mutate (Module &M, RandomIRBuilder &IB) |
virtual void | mutate (Function &F, RandomIRBuilder &IB) |
virtual void | mutate (BasicBlock &BB, RandomIRBuilder &IB) |
virtual void | mutate (Instruction &I, RandomIRBuilder &IB) |
Public Member Functions inherited from llvm::IRMutationStrategy | |
virtual | ~IRMutationStrategy ()=default |
virtual uint64_t | getWeight (size_t CurrentSize, size_t MaxSize, uint64_t CurrentWeight)=0 |
Provide a weight to bias towards choosing this strategy for a mutation. | |
Strategy that generates new function calls and inserts function signatures to the modules.
If any signatures are present in the module it will be called.
Definition at line 137 of file IRMutator.h.
|
inlineoverridevirtual |
Provide a weight to bias towards choosing this strategy for a mutation.
The value of the weight is arbitrary, but a good default is "the number of
distinct ways in which this strategy can mutate a unit". This can also be used to prefer strategies that shrink the overall size of the result when we start getting close to MaxSize
.
Implements llvm::IRMutationStrategy.
Definition at line 139 of file IRMutator.h.
|
virtual |
Reimplemented from llvm::IRMutationStrategy.
Definition at line 53 of file IRMutator.cpp.
|
overridevirtual |
Reimplemented from llvm::IRMutationStrategy.
Definition at line 360 of file IRMutator.cpp.
References llvm::any_of(), llvm::CallInst::Create(), F, getInsertionRange(), llvm::GlobalValue::getParent(), llvm::BasicBlock::getParent(), llvm::Type::getVoidTy(), I, llvm::makeSampler(), Name, llvm::fuzzerop::onlyType(), llvm::FunctionType::params(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::SmallVectorBase< Size_T >::size(), and llvm::ArrayRef< T >::slice().
|
virtual |
Reimplemented from llvm::IRMutationStrategy.
Definition at line 52 of file IRMutator.cpp.
|
inlinevirtual |
Reimplemented from llvm::IRMutationStrategy.
Definition at line 54 of file IRMutator.h.
|
virtual |
Mutators for each IR unit. By default these forward to a contained instance of the next smaller unit.
Reimplemented from llvm::IRMutationStrategy.
Definition at line 51 of file IRMutator.cpp.