aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineTraceMetrics.cpp
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2012-07-30 18:34:14 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2012-07-30 18:34:14 +0000
commit7361846f325e023ffd7927126b58a8f16d6372df (patch)
tree32ed1623e77cce0dbb9043cf21796f291d7913b2 /llvm/lib/CodeGen/MachineTraceMetrics.cpp
parent3df6c46fdd4bcf6fcdf7fca8a72fa9185ce8a3b5 (diff)
downloadllvm-7361846f325e023ffd7927126b58a8f16d6372df.zip
llvm-7361846f325e023ffd7927126b58a8f16d6372df.tar.gz
llvm-7361846f325e023ffd7927126b58a8f16d6372df.tar.bz2
Add MachineInstr::isTransient().
This is a cleaned up version of the isFree() function in MachineTraceMetrics.cpp. Transient instructions are very unlikely to produce any code in the final output. Either because they get eliminated by RegisterCoalescing, or because they are pseudo-instructions like labels and debug values. llvm-svn: 160977
Diffstat (limited to 'llvm/lib/CodeGen/MachineTraceMetrics.cpp')
-rw-r--r--llvm/lib/CodeGen/MachineTraceMetrics.cpp24
1 files changed, 1 insertions, 23 deletions
diff --git a/llvm/lib/CodeGen/MachineTraceMetrics.cpp b/llvm/lib/CodeGen/MachineTraceMetrics.cpp
index 3037cb3..cf0d9c6 100644
--- a/llvm/lib/CodeGen/MachineTraceMetrics.cpp
+++ b/llvm/lib/CodeGen/MachineTraceMetrics.cpp
@@ -69,28 +69,6 @@ void MachineTraceMetrics::releaseMemory() {
// The number of instructions in a basic block and the CPU resources used by
// those instructions don't depend on any given trace strategy.
-/// Is MI an instruction that should be considered free because it will likely
-/// be eliminated by later passes?
-static bool isFree(const MachineInstr *MI) {
- switch(MI->getOpcode()) {
- default: return false;
- case TargetOpcode::PHI:
- case TargetOpcode::PROLOG_LABEL:
- case TargetOpcode::EH_LABEL:
- case TargetOpcode::GC_LABEL:
- case TargetOpcode::KILL:
- case TargetOpcode::EXTRACT_SUBREG:
- case TargetOpcode::INSERT_SUBREG:
- case TargetOpcode::IMPLICIT_DEF:
- case TargetOpcode::SUBREG_TO_REG:
- case TargetOpcode::COPY_TO_REGCLASS:
- case TargetOpcode::DBG_VALUE:
- case TargetOpcode::REG_SEQUENCE:
- case TargetOpcode::COPY:
- return true;
- }
-}
-
/// Compute the resource usage in basic block MBB.
const MachineTraceMetrics::FixedBlockInfo*
MachineTraceMetrics::getResources(const MachineBasicBlock *MBB) {
@@ -106,7 +84,7 @@ MachineTraceMetrics::getResources(const MachineBasicBlock *MBB) {
for (MachineBasicBlock::const_iterator I = MBB->begin(), E = MBB->end();
I != E; ++I) {
const MachineInstr *MI = I;
- if (isFree(MI))
+ if (MI->isTransient())
continue;
++InstrCount;
if (MI->isCall())