LLVM API Documentation
#include "llvm/CodeGen/Passes.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/OwningPtr.h"
#include "llvm/ADT/SetVector.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineModuleInfo.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/MachineSSAUpdater.h"
#include "llvm/CodeGen/RegisterScavenging.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 "llvm/Target/TargetInstrInfo.h"
#include "llvm/Target/TargetRegisterInfo.h"
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "tailduplication" |
Typedefs | |
typedef std::vector< std::pair < MachineBasicBlock *, unsigned > > | AvailableValsTy |
Functions | |
STATISTIC (NumTails,"Number of tails duplicated") | |
STATISTIC (NumTailDups,"Number of tail duplicated blocks") | |
STATISTIC (NumInstrDups,"Additional instructions due to tail duplication") | |
STATISTIC (NumDeadBlocks,"Number of dead blocks removed") | |
STATISTIC (NumAddedPHIs,"Number of phis added") | |
INITIALIZE_PASS (TailDuplicatePass,"tailduplication","Tail Duplication", false, false) bool TailDuplicatePass | |
static void | VerifyPHIs (MachineFunction &MF, bool CheckExtra) |
static bool | isDefLiveOut (unsigned Reg, MachineBasicBlock *BB, const MachineRegisterInfo *MRI) |
static unsigned | getPHISrcRegOpIdx (MachineInstr *MI, MachineBasicBlock *SrcBB) |
static void | getRegsUsedByPHIs (const MachineBasicBlock &BB, DenseSet< unsigned > *UsedByPhi) |
static bool | bothUsedInPHI (const MachineBasicBlock &A, SmallPtrSet< MachineBasicBlock *, 8 > SuccsB) |
Variables | |
static cl::opt< unsigned > | TailDuplicateSize ("tail-dup-size", cl::desc("Maximum instructions to consider tail duplicating"), cl::init(2), cl::Hidden) |
static cl::opt< bool > | TailDupVerify ("tail-dup-verify", cl::desc("Verify sanity of PHI instructions during taildup"), cl::init(false), cl::Hidden) |
static cl::opt< unsigned > | TailDupLimit ("tail-dup-limit", cl::init(~0U), cl::Hidden) |
#define DEBUG_TYPE "tailduplication" |
Definition at line 15 of file TailDuplication.cpp.
typedef std::vector<std::pair<MachineBasicBlock*,unsigned> > AvailableValsTy |
Definition at line 57 of file TailDuplication.cpp.
|
static |
Definition at line 627 of file TailDuplication.cpp.
References llvm::MachineBasicBlock::begin(), llvm::SmallPtrSet< PtrType, SmallSize >::count(), llvm::MachineBasicBlock::empty(), llvm::MachineBasicBlock::succ_begin(), and llvm::MachineBasicBlock::succ_end().
|
static |
Definition at line 342 of file TailDuplication.cpp.
References llvm::MachineOperand::getMBB(), llvm::MachineInstr::getNumOperands(), and llvm::MachineInstr::getOperand().
|
static |
Definition at line 353 of file TailDuplication.cpp.
References llvm::MachineBasicBlock::begin(), llvm::MachineBasicBlock::end(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), I, llvm::DenseSet< ValueT, ValueInfoT >::insert(), llvm::MachineInstr::isPHI(), and llvm::A64CC::MI.
Definition at line 127 of file TailDuplication.cpp.
References llvm::HexagonInstrInfo::getRegisterInfo(), MRI, and TII.
|
static |
Definition at line 329 of file TailDuplication.cpp.
References llvm::MachineInstr::getParent(), llvm::MachineInstr::isDebugValue(), llvm::MachineRegisterInfo::use_begin(), and llvm::MachineRegisterInfo::use_end().
STATISTIC | ( | NumTails | , |
"Number of tails duplicated" | |||
) |
STATISTIC | ( | NumTailDups | , |
"Number of tail duplicated blocks" | |||
) |
STATISTIC | ( | NumInstrDups | , |
"Additional instructions due to tail duplication" | |||
) |
STATISTIC | ( | NumDeadBlocks | , |
"Number of dead blocks removed" | |||
) |
STATISTIC | ( | NumAddedPHIs | , |
"Number of phis added" | |||
) |
|
static |
Definition at line 147 of file TailDuplication.cpp.
References llvm::SetVector< T, Vector, Set >::begin(), llvm::MachineBasicBlock::begin(), llvm::MachineFunction::begin(), llvm::dbgs(), llvm::MachineBasicBlock::end(), llvm::MachineFunction::end(), llvm::MachineBasicBlock::getNumber(), I, llvm_unreachable, llvm::A64CC::MI, llvm::MachineBasicBlock::pred_begin(), and llvm::MachineBasicBlock::pred_end().
|
static |
|
static |