LLVM  8.0.1
Macros | Functions | Variables
MachineCSE.cpp File Reference
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/ScopedHashTable.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineDominators.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineOperand.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/CodeGen/TargetInstrInfo.h"
#include "llvm/CodeGen/TargetOpcodes.h"
#include "llvm/CodeGen/TargetRegisterInfo.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/MC/MCInstrDesc.h"
#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/Pass.h"
#include "llvm/Support/Allocator.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/RecyclingAllocator.h"
#include "llvm/Support/raw_ostream.h"
#include <cassert>
#include <iterator>
#include <utility>
#include <vector>
Include dependency graph for MachineCSE.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "machine-cse"
 

Functions

 STATISTIC (NumCoalesces, "Number of copies coalesced")
 
 STATISTIC (NumCSEs, "Number of common subexpression eliminated")
 
 STATISTIC (NumPhysCSEs, "Number of physreg referencing common subexpr eliminated")
 
 STATISTIC (NumCrossBBCSEs, "Number of cross-MBB physreg referencing CS eliminated")
 
 STATISTIC (NumCommutes, "Number of copies coalesced after commuting")
 
 INITIALIZE_PASS_BEGIN (MachineCSE, DEBUG_TYPE, "Machine Common Subexpression Elimination", false, false) INITIALIZE_PASS_END(MachineCSE
 
static bool isCallerPreservedOrConstPhysReg (unsigned Reg, const MachineFunction &MF, const TargetRegisterInfo &TRI)
 

Variables

 DEBUG_TYPE
 
Machine Common Subexpression Elimination
 
Machine Common Subexpression false
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "machine-cse"

Definition at line 49 of file MachineCSE.cpp.

Function Documentation

◆ INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( MachineCSE  ,
DEBUG_TYPE  ,
"Machine Common Subexpression Elimination ,
false  ,
false   
)

◆ isCallerPreservedOrConstPhysReg()

static bool isCallerPreservedOrConstPhysReg ( unsigned  Reg,
const MachineFunction MF,
const TargetRegisterInfo TRI 
)
static

Definition at line 238 of file MachineCSE.cpp.

References llvm::MachineBasicBlock::addLiveIn(), assert(), llvm::MachineBasicBlock::begin(), llvm::SmallVectorImpl< T >::clear(), llvm::MachineRegisterInfo::clearKillFlags(), llvm::MachineInstr::clearRegisterDeads(), llvm::TargetInstrInfo::commuteInstruction(), llvm::MachineRegisterInfo::constrainRegAttrs(), llvm::SmallSet< T, N, C >::count(), llvm::SmallPtrSetImpl< PtrType >::count(), llvm::dbgs(), llvm::tgtok::Def, E, llvm::SmallVectorBase::empty(), llvm::SmallSet< T, N, C >::empty(), llvm::MachineBasicBlock::end(), llvm::MachineInstr::eraseFromParent(), llvm::MachineInstr::getMF(), llvm::MachineBasicBlock::getName(), llvm::MachineInstr::getNumDefs(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getRegInfo(), llvm::MachineRegisterInfo::getUniqueVRegDef(), llvm::MachineInstr::hasUnmodeledSideEffects(), I, llvm::ARM_PROC::IE, llvm::SmallSet< T, N, C >::insert(), llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::MachineRegisterInfo::isAllocatable(), llvm::TargetInstrInfo::isAsCheapAsAMove(), llvm::MachineInstr::isCall(), llvm::TargetRegisterInfo::isCallerPreservedPhysReg(), llvm::MachineInstr::isCommutable(), llvm::MachineRegisterInfo::isConstantPhysReg(), llvm::MachineInstr::isCopyLike(), llvm::MachineOperand::isDead(), llvm::MachineInstr::isDebugInstr(), llvm::MachineOperand::isDef(), llvm::MachineInstr::isDereferenceableInvariantLoad(), llvm::MachineOperand::isImplicit(), llvm::MachineInstr::isImplicitDef(), llvm::MachineInstr::isInlineAsm(), llvm::MachineInstr::isKill(), llvm::MachineBasicBlock::isLiveIn(), llvm::MachineInstr::isPHI(), llvm::MachineInstr::isPosition(), llvm::MachineOperand::isReg(), llvm::MachineRegisterInfo::isReserved(), llvm::MachineBasicBlock::isSuccessor(), llvm::MachineInstr::isTerminator(), llvm::MCRegAliasIterator::isValid(), llvm::TargetRegisterInfo::isVirtualRegister(), LLVM_DEBUG, llvm::MachineInstr::mayLoad(), llvm::MachineInstr::mayStore(), MI, llvm::MachineInstr::operands(), llvm::SmallVectorImpl< T >::pop_back_val(), llvm::MachineBasicBlock::pred_begin(), llvm::MachineBasicBlock::pred_size(), ProcessBlock(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::SmallVectorTemplateBase< T >::push_back(), llvm::MachineRegisterInfo::replaceRegWith(), llvm::MachineRegisterInfo::reservedRegsFrozen(), llvm::MachineOperand::setIsDead(), SI, llvm::SmallVectorBase::size(), TRI, llvm::MachineRegisterInfo::use_nodbg_instructions(), and UseMI.

◆ STATISTIC() [1/5]

STATISTIC ( NumCoalesces  ,
"Number of copies coalesced"   
)

◆ STATISTIC() [2/5]

STATISTIC ( NumCSEs  ,
"Number of common subexpression eliminated"   
)

◆ STATISTIC() [3/5]

STATISTIC ( NumPhysCSEs  ,
"Number of physreg referencing common subexpr eliminated"   
)

◆ STATISTIC() [4/5]

STATISTIC ( NumCrossBBCSEs  ,
"Number of cross-MBB physreg referencing CS eliminated"   
)

◆ STATISTIC() [5/5]

STATISTIC ( NumCommutes  ,
"Number of copies coalesced after commuting"   
)

Variable Documentation

◆ DEBUG_TYPE

DEBUG_TYPE

Definition at line 140 of file MachineCSE.cpp.

◆ Elimination

Machine Common Subexpression Elimination

Definition at line 140 of file MachineCSE.cpp.

◆ false

Machine Common Subexpression false

Definition at line 140 of file MachineCSE.cpp.