1 //===-- WebAssemblyDebugValueManager.cpp - WebAssembly DebugValue Manager -===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
11 /// This file implements the manager for MachineInstr DebugValues.
13 //===----------------------------------------------------------------------===//
15 #include "WebAssemblyDebugValueManager.h"
16 #include "WebAssemblyMachineFunctionInfo.h"
17 #include "llvm/CodeGen/MachineInstr.h"
21 WebAssemblyDebugValueManager::WebAssemblyDebugValueManager(
22 MachineInstr *Instr) {
23 Instr->collectDebugValues(DbgValues);
26 void WebAssemblyDebugValueManager::move(MachineInstr *Insert) {
27 MachineBasicBlock *MBB = Insert->getParent();
28 for (MachineInstr *DBI : reverse(DbgValues))
29 MBB->splice(Insert, DBI->getParent(), DBI);
32 void WebAssemblyDebugValueManager::updateReg(unsigned Reg) {
33 for (auto *DBI : DbgValues)
34 DBI->getOperand(0).setReg(Reg);
37 void WebAssemblyDebugValueManager::clone(MachineInstr *Insert,
39 MachineBasicBlock *MBB = Insert->getParent();
40 MachineFunction *MF = MBB->getParent();
41 for (MachineInstr *DBI : reverse(DbgValues)) {
42 MachineInstr *Clone = MF->CloneMachineInstr(DBI);
43 Clone->getOperand(0).setReg(NewReg);
44 MBB->insert(Insert, Clone);