LLVM: llvm::InstructionSelect::MIIteratorMaintainer Class Reference (original) (raw)

This class observes instruction insertions/removals. More...

Public Member Functions
void changingInstr (MachineInstr &MI) override
This instruction is about to be mutated in some way.
void changedInstr (MachineInstr &MI) override
This instruction was mutated in some way.
void createdInstr (MachineInstr &MI) override
An instruction has been created and inserted into the function.
void erasingInstr (MachineInstr &MI) override
An instruction is about to be erased.
void reportFullyCreatedInstrs ()
Public Member Functions inherited from llvm::GISelChangeObserver
virtual ~GISelChangeObserver ()=default
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.

This class observes instruction insertions/removals.

InstructionSelect stores an iterator of the instruction prior to the one that is currently being selected to determine which instruction to select next. Previously this meant that selecting multiple instructions at once was illegal behavior due to potential invalidation of this iterator. This is a non-obvious limitation for selector implementers. Therefore, to allow deletion of arbitrary instructions, we detect this case and continue selection with the predecessor of the deleted instruction.

Definition at line 77 of file InstructionSelect.cpp.

changedInstr()

void llvm::InstructionSelect::MIIteratorMaintainer::changedInstr ( MachineInstr & MI) inlineoverridevirtual

changingInstr()

void llvm::InstructionSelect::MIIteratorMaintainer::changingInstr ( MachineInstr & MI) inlineoverridevirtual

createdInstr()

void llvm::InstructionSelect::MIIteratorMaintainer::createdInstr ( MachineInstr & MI) inlineoverridevirtual

erasingInstr()

void llvm::InstructionSelect::MIIteratorMaintainer::erasingInstr ( MachineInstr & MI) inlineoverridevirtual

reportFullyCreatedInstrs()

void llvm::InstructionSelect::MIIteratorMaintainer::reportFullyCreatedInstrs ( ) inline

MII


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