20 for (
auto &ChangingMI :
MRI.use_instructions(Reg)) {
22 ChangingAllUsesOfReg.insert(&ChangingMI);
27 for (
auto *ChangedMI : ChangingAllUsesOfReg)
29 ChangingAllUsesOfReg.clear();
34 : MF(MF), Delegate(Del) {
52 : Observers(Observers), TemporaryObserver(TemporaryObserver) {
unsigned const MachineRegisterInfo * MRI
This contains common code to allow clients to notify changes to machine instr.
Abstract class that contains various methods for clients to notify about changes.
virtual void changingInstr(MachineInstr &MI)=0
This instruction is about to be mutated in some way.
void finishedChangingAllUsesOfReg()
All instructions reported as changing by changingAllUsesOfReg() have finished being changed.
virtual void changedInstr(MachineInstr &MI)=0
This instruction was mutated in some way.
void changingAllUsesOfReg(const MachineRegisterInfo &MRI, Register Reg)
All the instructions using the given register are being changed.
Simple wrapper observer that takes several observers, and calls each one for each event.
void removeObserver(GISelChangeObserver *O)
void addObserver(GISelChangeObserver *O)
void setObserver(GISelChangeObserver *O)
void resetDelegate(Delegate *delegate)
Reset the currently registered delegate - otherwise assert.
void setDelegate(Delegate *delegate)
Set the delegate.
MachineRegisterInfo - Keep track of information for virtual and physical registers,...
RAIIDelegateInstaller(MachineFunction &MF, MachineFunction::Delegate *Del)
~RAIIMFObserverInstaller()
RAIIMFObserverInstaller(MachineFunction &MF, GISelChangeObserver &Observer)
~RAIITemporaryObserverInstaller()
RAIITemporaryObserverInstaller(GISelObserverWrapper &Observers, GISelChangeObserver &TemporaryObserver)
Wrapper class representing virtual and physical registers.
This is an optimization pass for GlobalISel generic memory operations.