LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Macros | Functions | Variables
MachineSink.cpp File Reference
#include "llvm/CodeGen/Passes.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/CodeGen/MachineDominators.h"
#include "llvm/CodeGen/MachineLoopInfo.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetInstrInfo.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetRegisterInfo.h"
Include dependency graph for MachineSink.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "machine-sink"
 

Functions

 STATISTIC (NumSunk,"Number of machine instructions sunk")
 
 STATISTIC (NumSplit,"Number of critical edges split")
 
 STATISTIC (NumCoalesces,"Number of copies coalesced")
 
 INITIALIZE_PASS_BEGIN (MachineSinking,"machine-sink","Machine code sinking", false, false) INITIALIZE_PASS_END(MachineSinking
 
static bool AvoidsSinking (MachineInstr *MI, MachineRegisterInfo *MRI)
 
static void collectDebugValues (MachineInstr *MI, SmallVectorImpl< MachineInstr * > &DbgValues)
 
static bool isPostDominatedBy (MachineBasicBlock *A, MachineBasicBlock *B)
 isPostDominatedBy - Return true if A is post dominated by B. More...
 

Variables

static cl::opt< boolSplitEdges ("machine-sink-split", cl::desc("Split critical edges during machine sinking"), cl::init(true), cl::Hidden)
 
machine sink
 
machine Machine code sinking
 
machine Machine code false
 

Macro Definition Documentation

#define DEBUG_TYPE   "machine-sink"

Definition at line 19 of file MachineSink.cpp.

Function Documentation

static bool AvoidsSinking ( MachineInstr MI,
MachineRegisterInfo MRI 
)
static
static void collectDebugValues ( MachineInstr MI,
SmallVectorImpl< MachineInstr * > &  DbgValues 
)
static
INITIALIZE_PASS_BEGIN ( MachineSinking  ,
"machine-sink ,
"Machine code sinking ,
false  ,
false   
)
static bool isPostDominatedBy ( MachineBasicBlock A,
MachineBasicBlock B 
)
static

isPostDominatedBy - Return true if A is post dominated by B.

Definition at line 431 of file MachineSink.cpp.

References I, llvm::MachineBasicBlock::succ_begin(), and llvm::MachineBasicBlock::succ_size().

STATISTIC ( NumSunk  ,
"Number of machine instructions sunk"   
)
STATISTIC ( NumSplit  ,
"Number of critical edges split  
)
STATISTIC ( NumCoalesces  ,
"Number of copies coalesced"   
)

Variable Documentation

machine Machine code false

Definition at line 120 of file MachineSink.cpp.

void LICM::sink

sink - When an instruction is found to only be used outside of the loop, this function moves it to the exit blocks and patches up SSA form as needed. This method is guaranteed to remove the original instruction from its position, and may either delete it or move it to outside of the loop.

Definition at line 120 of file MachineSink.cpp.

machine Machine code sinking

Definition at line 120 of file MachineSink.cpp.

cl::opt<bool> SplitEdges("machine-sink-split", cl::desc("Split critical edges during machine sinking"), cl::init(true), cl::Hidden)
static