LLVM 22.0.0git
|
#include "llvm/FuzzMutate/IRMutator.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/Bitcode/BitcodeReader.h"
#include "llvm/Bitcode/BitcodeWriter.h"
#include "llvm/FuzzMutate/Operations.h"
#include "llvm/FuzzMutate/Random.h"
#include "llvm/FuzzMutate/RandomIRBuilder.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/FMF.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/InstIterator.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/IntrinsicsAMDGPU.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Operator.h"
#include "llvm/IR/PassInstrumentation.h"
#include "llvm/IR/Verifier.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/SourceMgr.h"
#include "llvm/Transforms/Scalar/DCE.h"
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
#include <map>
#include <optional>
Go to the source code of this file.
Functions | |
static void | eliminateDeadCode (Function &F) |
static Instruction * | getEffectiveTerminator (BasicBlock &BB) |
static BasicBlock::iterator | getEndIterator (BasicBlock &BB) |
static iterator_range< BasicBlock::iterator > | getInsertionRange (BasicBlock &BB) |
static uint64_t | getUniqueCaseValue (SmallSet< uint64_t, 4 > &CasesTaken, uint64_t MaxValue, RandomIRBuilder &IB) |
Return a case value that is not already taken to make sure we don't have two cases with same value. | |
static bool | isUnsupportedFunction (Function *F) |
Determines whether a function is unsupported by the current mutator's implementation. | |
|
static |
Definition at line 84 of file IRMutator.cpp.
References llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::addPass(), F, FAM, llvm::AnalysisManager< IRUnitT, ExtraArgTs >::registerPass(), and llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::run().
Referenced by llvm::InjectorIRStrategy::mutate(), llvm::InstDeleterIRStrategy::mutate(), and llvm::DCEPass::run().
|
inlinestatic |
Definition at line 120 of file IRMutator.cpp.
References llvm::BasicBlock::getTerminatingMustTailCall(), llvm::BasicBlock::getTerminator(), I, and II.
Referenced by getEndIterator(), and llvm::ShuffleBlockStrategy::mutate().
|
inlinestatic |
Definition at line 136 of file IRMutator.cpp.
References llvm::BasicBlock::empty(), llvm::BasicBlock::end(), End, getEffectiveTerminator(), and llvm::BasicBlock::getTerminator().
Referenced by getInsertionRange().
|
inlinestatic |
Definition at line 153 of file IRMutator.cpp.
References End, getEndIterator(), llvm::BasicBlock::getFirstInsertionPt(), and llvm::make_range().
Referenced by llvm::InjectorIRStrategy::mutate(), llvm::InsertFunctionStrategy::mutate(), llvm::InsertCFGStrategy::mutate(), llvm::InsertPHIStrategy::mutate(), and llvm::SinkInstructionStrategy::mutate().
|
static |
Return a case value that is not already taken to make sure we don't have two cases with same value.
Definition at line 383 of file IRMutator.cpp.
References llvm::SmallSet< T, N, C >::count(), and llvm::SmallSet< T, N, C >::insert().
Referenced by llvm::InsertCFGStrategy::mutate().
Determines whether a function is unsupported by the current mutator's implementation.
The function returns true if any of the following criteria are met:
Definition at line 399 of file IRMutator.cpp.
References A, llvm::any_of(), F, and llvm::isCallableCC().
Referenced by llvm::InsertFunctionStrategy::mutate().