1 //===-- lib/CodeGen/GlobalISel/GISelChangeObserver.cpp --------------------===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 // This file constains common code to combine machine functions at generic
11 //===----------------------------------------------------------------------===//
13 #include "llvm/CodeGen/GlobalISel/GISelChangeObserver.h"
14 #include "llvm/CodeGen/MachineRegisterInfo.h"
18 void GISelChangeObserver::changingAllUsesOfReg(
19 const MachineRegisterInfo
&MRI
, unsigned Reg
) {
20 for (auto &ChangingMI
: MRI
.use_instructions(Reg
)) {
21 changingInstr(ChangingMI
);
22 ChangingAllUsesOfReg
.insert(&ChangingMI
);
26 void GISelChangeObserver::finishedChangingAllUsesOfReg() {
27 for (auto *ChangedMI
: ChangingAllUsesOfReg
)
28 changedInstr(*ChangedMI
);
29 ChangingAllUsesOfReg
.clear();
32 RAIIDelegateInstaller::RAIIDelegateInstaller(MachineFunction
&MF
,
33 MachineFunction::Delegate
*Del
)
34 : MF(MF
), Delegate(Del
) {
35 // Register this as the delegate for handling insertions and deletions of
40 RAIIDelegateInstaller::~RAIIDelegateInstaller() { MF
.resetDelegate(Delegate
); }