|
LLVM
4.0.0
|
#include "llvm/Transforms/Utils/CodeExtractor.h"#include "llvm/ADT/STLExtras.h"#include "llvm/ADT/SetVector.h"#include "llvm/ADT/StringExtras.h"#include "llvm/Analysis/BlockFrequencyInfo.h"#include "llvm/Analysis/BlockFrequencyInfoImpl.h"#include "llvm/Analysis/BranchProbabilityInfo.h"#include "llvm/Analysis/LoopInfo.h"#include "llvm/Analysis/RegionInfo.h"#include "llvm/Analysis/RegionIterator.h"#include "llvm/IR/Constants.h"#include "llvm/IR/DerivedTypes.h"#include "llvm/IR/Dominators.h"#include "llvm/IR/Instructions.h"#include "llvm/IR/Intrinsics.h"#include "llvm/IR/LLVMContext.h"#include "llvm/IR/MDBuilder.h"#include "llvm/IR/Module.h"#include "llvm/IR/Verifier.h"#include "llvm/Pass.h"#include "llvm/Support/BlockFrequency.h"#include "llvm/Support/CommandLine.h"#include "llvm/Support/Debug.h"#include "llvm/Support/ErrorHandling.h"#include "llvm/Support/raw_ostream.h"#include "llvm/Transforms/Utils/BasicBlockUtils.h"#include <algorithm>#include <set>Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "code-extractor" |
Functions | |
| template<typename IteratorT > | |
| static SetVector< BasicBlock * > | buildExtractionBlockSet (IteratorT BBBegin, IteratorT BBEnd) |
| Build a set of blocks to extract if the input blocks are viable. More... | |
| static SetVector< BasicBlock * > | buildExtractionBlockSet (ArrayRef< BasicBlock * > BBs) |
| Helper to call buildExtractionBlockSet with an ArrayRef. More... | |
| static SetVector< BasicBlock * > | buildExtractionBlockSet (const RegionNode &RN) |
| Helper to call buildExtractionBlockSet with a RegionNode. More... | |
| static bool | definedInRegion (const SetVector< BasicBlock * > &Blocks, Value *V) |
| definedInRegion - Return true if the specified value is defined in the extracted region. More... | |
| static bool | definedInCaller (const SetVector< BasicBlock * > &Blocks, Value *V) |
| definedInCaller - Return true if the specified value is defined in the function being code extracted, but not in the region being extracted. More... | |
| static BasicBlock * | FindPhiPredForUseInBlock (Value *Used, BasicBlock *BB) |
| FindPhiPredForUseInBlock - Given a value and a basic block, find a PHI that uses the value within the basic block, and return the predecessor block associated with that use, or return 0 if none is found. More... | |
Variables | |
| static cl::opt< bool > | AggregateArgsOpt ("aggregate-extracted-args", cl::Hidden, cl::desc("Aggregate arguments to code-extracted functions")) |
| #define DEBUG_TYPE "code-extractor" |
Definition at line 46 of file CodeExtractor.cpp.
|
static |
Build a set of blocks to extract if the input blocks are viable.
Definition at line 77 of file CodeExtractor.cpp.
References assert(), llvm::SetVector< T, Vector, Set >::begin(), llvm::SetVector< T, Vector, Set >::clear(), llvm::SetVector< T, Vector, Set >::count(), E, llvm::SetVector< T, Vector, Set >::end(), I, llvm::SetVector< T, Vector, Set >::insert(), llvm::CodeExtractor::isBlockValidForExtraction(), llvm_unreachable, llvm::pred_begin(), and llvm::pred_end().
Referenced by buildExtractionBlockSet().
|
static |
Helper to call buildExtractionBlockSet with an ArrayRef.
Definition at line 111 of file CodeExtractor.cpp.
References llvm::ArrayRef< T >::begin(), buildExtractionBlockSet(), and llvm::ArrayRef< T >::end().
|
static |
Helper to call buildExtractionBlockSet with a RegionNode.
Definition at line 117 of file CodeExtractor.cpp.
References llvm::RegionBase< RegionTr >::block_begin(), llvm::RegionBase< RegionTr >::block_end(), buildExtractionBlockSet(), llvm::RegionNodeBase< Tr >::getNodeAs(), and llvm::RegionNodeBase< Tr >::isSubRegion().
|
static |
definedInCaller - Return true if the specified value is defined in the function being code extracted, but not in the region being extracted.
These values must be passed in as live-ins to the function.
Definition at line 164 of file CodeExtractor.cpp.
References llvm::SetVector< T, Vector, Set >::count(), and I.
Referenced by llvm::CodeExtractor::findInputsOutputs().
|
static |
definedInRegion - Return true if the specified value is defined in the extracted region.
Definition at line 154 of file CodeExtractor.cpp.
References llvm::SetVector< T, Vector, Set >::count(), and I.
Referenced by llvm::CodeExtractor::findInputsOutputs().
|
static |
FindPhiPredForUseInBlock - Given a value and a basic block, find a PHI that uses the value within the basic block, and return the predecessor block associated with that use, or return 0 if none is found.
Definition at line 424 of file CodeExtractor.cpp.
References llvm::dyn_cast(), llvm::PHINode::getIncomingBlock(), llvm::Instruction::getParent(), P, and llvm::Value::uses().
1.8.6