|
LLVM
3.7.0
|
#include "llvm/CodeGen/Passes.h"#include "llvm/ADT/SetVector.h"#include "llvm/ADT/SmallSet.h"#include "llvm/ADT/SparseBitVector.h"#include "llvm/ADT/Statistic.h"#include "llvm/Analysis/AliasAnalysis.h"#include "llvm/CodeGen/MachineBlockFrequencyInfo.h"#include "llvm/CodeGen/MachineDominators.h"#include "llvm/CodeGen/MachineLoopInfo.h"#include "llvm/CodeGen/MachinePostDominators.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/TargetRegisterInfo.h"#include "llvm/Target/TargetSubtargetInfo.h"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) |
| collectDebgValues - Scan instructions following MI and collect any matching DBG_VALUEs. More... | |
Variables | |
| static cl::opt< bool > | SplitEdges ("machine-sink-split", cl::desc("Split critical edges during machine sinking"), cl::init(true), cl::Hidden) |
| static cl::opt< bool > | UseBlockFreqInfo ("machine-sink-bfi", cl::desc("Use block frequency info to find successors to sink"), cl::init(true), cl::Hidden) |
| machine | 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. More... | |
| machine Machine code | sinking |
| machine Machine code | false |
| #define DEBUG_TYPE "machine-sink" |
Definition at line 38 of file MachineSink.cpp.
|
static |
Definition at line 472 of file MachineSink.cpp.
References llvm::MachineInstr::isInsertSubreg(), llvm::MachineInstr::isRegSequence(), and llvm::MachineInstr::isSubregToReg().
|
static |
collectDebgValues - Scan instructions following MI and collect any matching DBG_VALUEs.
Definition at line 478 of file MachineSink.cpp.
References llvm::SmallVectorImpl< T >::clear(), llvm::DI, llvm::MachineBasicBlock::end(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineOperand::getReg(), llvm::MachineOperand::isReg(), llvm::AArch64CC::MI, and llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back().
| STATISTIC | ( | NumSunk | , |
| "Number of machine instructions sunk" | |||
| ) |
| STATISTIC | ( | NumSplit | , |
| "Number of critical edges split" | |||
| ) |
| STATISTIC | ( | NumCoalesces | , |
| "Number of copies coalesced" | |||
| ) |
| machine Machine code false |
Definition at line 154 of file MachineSink.cpp.
| static bool 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 154 of file MachineSink.cpp.
| machine Machine code sinking |
Definition at line 154 of file MachineSink.cpp.
|
static |
1.8.6