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) {
45 MF.setObserver(&Observer);
52 : Observers(Observers), TemporaryObserver(TemporaryObserver) {
53 Observers.addObserver(&TemporaryObserver);
57 Observers.removeObserver(&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.
LLVM_ABI 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.
LLVM_ABI 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.
MachineRegisterInfo - Keep track of information for virtual and physical registers,...
LLVM_ABI ~RAIIDelegateInstaller()
LLVM_ABI RAIIDelegateInstaller(MachineFunction &MF, MachineFunction::Delegate *Del)
LLVM_ABI ~RAIIMFObserverInstaller()
LLVM_ABI RAIIMFObserverInstaller(MachineFunction &MF, GISelChangeObserver &Observer)
LLVM_ABI ~RAIITemporaryObserverInstaller()
LLVM_ABI RAIITemporaryObserverInstaller(GISelObserverWrapper &Observers, GISelChangeObserver &TemporaryObserver)
Wrapper class representing virtual and physical registers.
This is an optimization pass for GlobalISel generic memory operations.