LLVM  4.0.0
Namespaces | Macros | Functions | Variables
TailDuplicator.cpp File Reference
#include "llvm/CodeGen/TailDuplicator.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/SetVector.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/CodeGen/MachineBranchProbabilityInfo.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineLoopInfo.h"
#include "llvm/CodeGen/MachineModuleInfo.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/IR/Function.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
Include dependency graph for TailDuplicator.cpp:

Go to the source code of this file.

Namespaces

 llvm
 Compute iterated dominance frontiers using a linear time algorithm.
 

Macros

#define DEBUG_TYPE   "tailduplication"
 

Functions

 STATISTIC (NumTails,"Number of tails duplicated")
 
 STATISTIC (NumTailDups,"Number of tail duplicated blocks")
 
 STATISTIC (NumTailDupAdded,"Number of instructions added due to tail duplication")
 
 STATISTIC (NumTailDupRemoved,"Number of instructions removed due to tail duplication")
 
 STATISTIC (NumDeadBlocks,"Number of dead blocks removed")
 
 STATISTIC (NumAddedPHIs,"Number of phis added")
 
cl::opt< unsignedllvm::TailDupIndirectBranchSize ("tail-dup-indirect-size", cl::desc("Maximum instructions to consider tail duplicating blocks that ""end with indirect branches."), cl::init(20), cl::Hidden)
 
static void llvm::VerifyPHIs (MachineFunction &MF, bool CheckExtra)
 
static bool llvm::isDefLiveOut (unsigned Reg, MachineBasicBlock *BB, const MachineRegisterInfo *MRI)
 
static unsigned llvm::getPHISrcRegOpIdx (MachineInstr *MI, MachineBasicBlock *SrcBB)
 
static void llvm::getRegsUsedByPHIs (const MachineBasicBlock &BB, DenseSet< unsigned > *UsedByPhi)
 
static bool llvm::bothUsedInPHI (const MachineBasicBlock &A, const SmallPtrSet< MachineBasicBlock *, 8 > &SuccsB)
 

Variables

static cl::opt< unsignedllvm::TailDuplicateSize ("tail-dup-size", cl::desc("Maximum instructions to consider tail duplicating"), cl::init(2), cl::Hidden)
 
static cl::opt< boolllvm::TailDupVerify ("tail-dup-verify", cl::desc("Verify sanity of PHI instructions during taildup"), cl::init(false), cl::Hidden)
 
static cl::opt< unsignedllvm::TailDupLimit ("tail-dup-limit", cl::init(~0U), cl::Hidden)
 

Macro Definition Documentation

#define DEBUG_TYPE   "tailduplication"

Definition at line 33 of file TailDuplicator.cpp.

Function Documentation

STATISTIC ( NumTails  ,
"Number of tails duplicated"   
)
STATISTIC ( NumTailDups  ,
"Number of tail duplicated blocks"   
)
STATISTIC ( NumTailDupAdded  ,
"Number of instructions added due to tail duplication"   
)
STATISTIC ( NumTailDupRemoved  ,
"Number of instructions removed due to tail duplication"   
)
STATISTIC ( NumDeadBlocks  ,
"Number of dead blocks removed"   
)
STATISTIC ( NumAddedPHIs  ,
"Number of phis added"   
)