LLVM: llvm::GISelChangeObserver Class Reference (original) (raw)

Abstract class that contains various methods for clients to notify about changes. More...

#include "[llvm/CodeGen/GlobalISel/GISelChangeObserver.h](GISelChangeObserver%5F8h%5Fsource.html)"

Public Member Functions
virtual ~GISelChangeObserver ()=default
virtual void erasingInstr (MachineInstr &MI)=0
An instruction is about to be erased.
virtual void createdInstr (MachineInstr &MI)=0
An instruction has been created and inserted into the function.
virtual void changingInstr (MachineInstr &MI)=0
This instruction is about to be mutated in some way.
virtual void changedInstr (MachineInstr &MI)=0
This instruction was mutated in some way.
LLVM_ABI void changingAllUsesOfReg (const MachineRegisterInfo &MRI, Register Reg)
All the instructions using the given register are being changed.
LLVM_ABI void finishedChangingAllUsesOfReg ()
All instructions reported as changing by changingAllUsesOfReg() have finished being changed.

Abstract class that contains various methods for clients to notify about changes.

This should be the preferred way for APIs to notify changes. Typically calling erasingInstr/createdInstr multiple times should not affect the result. The observer would likely need to check if it was already notified earlier (consider using GISelWorkList).

Definition at line 30 of file GISelChangeObserver.h.

virtual llvm::GISelChangeObserver::~GISelChangeObserver ( ) virtualdefault

changedInstr()

virtual void llvm::GISelChangeObserver::changedInstr ( MachineInstr & MI) pure virtual

This instruction was mutated in some way.

Implemented in llvm::Combiner::WorkListMaintainerImpl< Lvl >, llvm::GISelCSEInfo, llvm::GISelObserverWrapper, llvm::GISelValueTracking, llvm::InstructionSelect::MIIteratorMaintainer, and llvm::LostDebugLocObserver.

References LLVM_ABI, MI, MRI, and Reg.

Referenced by llvm::GIMatchTableExecutor::executeMatchTable(), finishedChangingAllUsesOfReg(), llvm::AMDGPULegalizerInfo::legalizeBufferLoad(), llvm::RISCVLegalizerInfo::legalizeCustom(), llvm::AMDGPULegalizerInfo::legalizeImageIntrinsic(), llvm::AArch64LegalizerInfo::legalizeIntrinsic(), llvm::AMDGPULegalizerInfo::legalizeIntrinsic(), llvm::RISCVLegalizerInfo::legalizeIntrinsic(), llvm::AMDGPULegalizerInfo::legalizeLoad(), llvm::AMDGPULegalizerInfo::legalizeSBufferLoad(), llvm::AMDGPULegalizerInfo::legalizeSBufferPrefetch(), llvm::AMDGPULegalizerInfo::legalizeStore(), llvm::LegalizationArtifactCombiner::replaceRegOrBuildCopy(), and llvm::LegalizationArtifactCombiner::ArtifactValueFinder::tryCombineUnmergeDefs().

changingAllUsesOfReg()

changingInstr()

virtual void llvm::GISelChangeObserver::changingInstr ( MachineInstr & MI) pure virtual

This instruction is about to be mutated in some way.

Implemented in llvm::Combiner::WorkListMaintainerImpl< Lvl >, llvm::GISelCSEInfo, llvm::GISelObserverWrapper, llvm::GISelValueTracking, llvm::InstructionSelect::MIIteratorMaintainer, and llvm::LostDebugLocObserver.

References MI.

Referenced by changingAllUsesOfReg(), llvm::GIMatchTableExecutor::executeMatchTable(), llvm::AMDGPULegalizerInfo::legalizeBufferLoad(), llvm::RISCVLegalizerInfo::legalizeCustom(), llvm::AMDGPULegalizerInfo::legalizeImageIntrinsic(), llvm::AArch64LegalizerInfo::legalizeIntrinsic(), llvm::AMDGPULegalizerInfo::legalizeIntrinsic(), llvm::RISCVLegalizerInfo::legalizeIntrinsic(), llvm::AMDGPULegalizerInfo::legalizeLoad(), llvm::AMDGPULegalizerInfo::legalizeSBufferLoad(), llvm::AMDGPULegalizerInfo::legalizeSBufferPrefetch(), llvm::AMDGPULegalizerInfo::legalizeStore(), llvm::LegalizationArtifactCombiner::replaceRegOrBuildCopy(), and llvm::LegalizationArtifactCombiner::ArtifactValueFinder::tryCombineUnmergeDefs().

createdInstr()

virtual void llvm::GISelChangeObserver::createdInstr ( MachineInstr & MI) pure virtual

erasingInstr()

virtual void llvm::GISelChangeObserver::erasingInstr ( MachineInstr & MI) pure virtual

finishedChangingAllUsesOfReg()

void GISelChangeObserver::finishedChangingAllUsesOfReg ( )

The documentation for this class was generated from the following files: