LLVM  6.0.0svn
Macros | Functions | Variables
CodeExtractor.cpp File Reference
#include "llvm/Transforms/Utils/CodeExtractor.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/Optional.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SetVector.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/Analysis/BlockFrequencyInfo.h"
#include "llvm/Analysis/BlockFrequencyInfoImpl.h"
#include "llvm/Analysis/BranchProbabilityInfo.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/IR/Argument.h"
#include "llvm/IR/Attributes.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/CFG.h"
#include "llvm/IR/Constant.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/GlobalValue.h"
#include "llvm/IR/InstrTypes.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/MDBuilder.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/User.h"
#include "llvm/IR/Value.h"
#include "llvm/IR/Verifier.h"
#include "llvm/Pass.h"
#include "llvm/Support/BlockFrequency.h"
#include "llvm/Support/BranchProbability.h"
#include "llvm/Support/Casting.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 <cassert>
#include <cstdint>
#include <iterator>
#include <map>
#include <set>
#include <utility>
#include <vector>

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "code-extractor"
 

Functions

static SetVector< BasicBlock * > buildExtractionBlockSet (ArrayRef< BasicBlock *> BBs, DominatorTree *DT, bool AllowVarArgs)
 Build a set of blocks to extract if the input blocks are viable. 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 BasicBlockgetCommonExitBlock (const SetVector< BasicBlock *> &Blocks)
 

Variables

static cl::opt< boolAggregateArgsOpt ("aggregate-extracted-args", cl::Hidden, cl::desc("Aggregate arguments to code-extracted functions"))
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "code-extractor"

Definition at line 70 of file CodeExtractor.cpp.

Function Documentation

◆ buildExtractionBlockSet()

static SetVector<BasicBlock *> buildExtractionBlockSet ( ArrayRef< BasicBlock *>  BBs,
DominatorTree DT,
bool  AllowVarArgs 
)
static

◆ definedInCaller()

static bool definedInCaller ( const SetVector< BasicBlock *> &  Blocks,
Value V 
)
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 195 of file CodeExtractor.cpp.

References llvm::SetVector< T, Vector, Set >::count(), and I.

Referenced by llvm::CodeExtractor::findInputsOutputs().

◆ definedInRegion()

static bool definedInRegion ( const SetVector< BasicBlock *> &  Blocks,
Value V 
)
static

definedInRegion - Return true if the specified value is defined in the extracted region.

Definition at line 185 of file CodeExtractor.cpp.

References llvm::SetVector< T, Vector, Set >::count(), and I.

Referenced by llvm::CodeExtractor::findAllocas(), and llvm::CodeExtractor::findInputsOutputs().

◆ getCommonExitBlock()

static BasicBlock* getCommonExitBlock ( const SetVector< BasicBlock *> &  Blocks)
static

Variable Documentation

◆ AggregateArgsOpt

cl::opt<bool> AggregateArgsOpt("aggregate-extracted-args", cl::Hidden, cl::desc("Aggregate arguments to code-extracted functions"))
static