LLVM 17.0.0git
Macros | Functions | Variables
MachineCopyPropagation.cpp File Reference
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SetVector.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/ADT/iterator_range.h"
#include "llvm/CodeGen/MachineBasicBlock.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/TargetInstrInfo.h"
#include "llvm/CodeGen/TargetRegisterInfo.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/InitializePasses.h"
#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/Pass.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/DebugCounter.h"
#include "llvm/Support/raw_ostream.h"
#include <cassert>
#include <iterator>
Include dependency graph for MachineCopyPropagation.cpp:

Go to the source code of this file.


#define DEBUG_TYPE   "machine-cp"


 STATISTIC (NumDeletes, "Number of dead copies deleted")
 STATISTIC (NumCopyForwards, "Number of copy uses forwarded")
 STATISTIC (NumCopyBackwardPropagated, "Number of copy defs backward propagated")
 DEBUG_COUNTER (FwdCounter, "machine-cp-fwd", "Controls which register COPYs are forwarded")
 INITIALIZE_PASS (MachineCopyPropagation, DEBUG_TYPE, "Machine Copy Propagation Pass", false, false) void MachineCopyPropagation
static bool isNopCopy (const MachineInstr &PreviousCopy, MCRegister Src, MCRegister Def, const TargetRegisterInfo *TRI, const TargetInstrInfo *TII, bool UseCopyInstr)
 Return true if PreviousCopy did copy register Src to register Def.
static bool isBackwardPropagatableCopy (MachineInstr &MI, const MachineRegisterInfo &MRI, const TargetInstrInfo &TII, bool UseCopyInstr)


static cl::opt< boolMCPUseCopyInstr ("mcp-use-is-copy-instr", cl::init(false), cl::Hidden)

Macro Definition Documentation


#define DEBUG_TYPE   "machine-cp"

Definition at line 78 of file MachineCopyPropagation.cpp.

Function Documentation


DEBUG_COUNTER ( FwdCounter  ,
"machine-cp-fwd"  ,
"Controls which register COPYs are forwarded"   


INITIALIZE_PASS ( MachineCopyPropagation  ,
"Machine Copy Propagation Pass"  ,
false  ,

◆ isBackwardPropagatableCopy()

static bool isBackwardPropagatableCopy ( MachineInstr MI,
const MachineRegisterInfo MRI,
const TargetInstrInfo TII,
bool  UseCopyInstr 

Definition at line 854 of file MachineCopyPropagation.cpp.

References assert(), MI, MRI, and TII.

◆ isNopCopy()

static bool isNopCopy ( const MachineInstr PreviousCopy,
MCRegister  Src,
MCRegister  Def,
const TargetRegisterInfo TRI,
const TargetInstrInfo TII,
bool  UseCopyInstr 

Return true if PreviousCopy did copy register Src to register Def.

This fact may have been obscured by sub register usage or may not be true at all even though Src and Def are subregisters of the registers used in PreviousCopy. e.g. isNopCopy("ecx = COPY eax", AX, CX) == true isNopCopy("ecx = COPY eax", AH, CL) == false

Definition at line 383 of file MachineCopyPropagation.cpp.

References TII, and TRI.

◆ STATISTIC() [1/3]

STATISTIC ( NumCopyBackwardPropagated  ,
"Number of copy defs backward propagated"   

◆ STATISTIC() [2/3]

STATISTIC ( NumCopyForwards  ,
"Number of copy uses forwarded"   

◆ STATISTIC() [3/3]

STATISTIC ( NumDeletes  ,
"Number of dead copies deleted"   

Variable Documentation

◆ MCPUseCopyInstr

cl::opt< bool > MCPUseCopyInstr("mcp-use-is-copy-instr", cl::init(false), cl::Hidden) ( "mcp-use-is-copy-instr"  ,
cl::init(false)  ,