1629db5d8SDaniel Sanders //===-- lib/CodeGen/GlobalISel/GISelChangeObserver.cpp --------------------===// 2629db5d8SDaniel Sanders // 3*2946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*2946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 5*2946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6629db5d8SDaniel Sanders // 7629db5d8SDaniel Sanders //===----------------------------------------------------------------------===// 8629db5d8SDaniel Sanders // 9629db5d8SDaniel Sanders // This file constains common code to combine machine functions at generic 10629db5d8SDaniel Sanders // level. 11629db5d8SDaniel Sanders //===----------------------------------------------------------------------===// 12629db5d8SDaniel Sanders 13629db5d8SDaniel Sanders #include "llvm/CodeGen/GlobalISel/GISelChangeObserver.h" 14629db5d8SDaniel Sanders #include "llvm/CodeGen/MachineRegisterInfo.h" 15629db5d8SDaniel Sanders 16629db5d8SDaniel Sanders using namespace llvm; 17629db5d8SDaniel Sanders 18629db5d8SDaniel Sanders void GISelChangeObserver::changingAllUsesOfReg( 19629db5d8SDaniel Sanders const MachineRegisterInfo &MRI, unsigned Reg) { 20629db5d8SDaniel Sanders for (auto &ChangingMI : MRI.use_instructions(Reg)) { 21629db5d8SDaniel Sanders changingInstr(ChangingMI); 22629db5d8SDaniel Sanders ChangingAllUsesOfReg.insert(&ChangingMI); 23629db5d8SDaniel Sanders } 24629db5d8SDaniel Sanders } 25629db5d8SDaniel Sanders 26629db5d8SDaniel Sanders void GISelChangeObserver::finishedChangingAllUsesOfReg() { 27629db5d8SDaniel Sanders for (auto *ChangedMI : ChangingAllUsesOfReg) 28629db5d8SDaniel Sanders changedInstr(*ChangedMI); 29629db5d8SDaniel Sanders } 30629db5d8SDaniel Sanders 31500e3eadSAditya Nandakumar RAIIDelegateInstaller::RAIIDelegateInstaller(MachineFunction &MF, 32500e3eadSAditya Nandakumar MachineFunction::Delegate *Del) 33500e3eadSAditya Nandakumar : MF(MF), Delegate(Del) { 34500e3eadSAditya Nandakumar // Register this as the delegate for handling insertions and deletions of 35500e3eadSAditya Nandakumar // instructions. 36500e3eadSAditya Nandakumar MF.setDelegate(Del); 37500e3eadSAditya Nandakumar } 38500e3eadSAditya Nandakumar 39500e3eadSAditya Nandakumar RAIIDelegateInstaller::~RAIIDelegateInstaller() { MF.resetDelegate(Delegate); } 40