109467b48Spatrick // WebAssemblyDebugValueManager.h - WebAssembly DebugValue Manager -*- C++ -*-// 209467b48Spatrick // 309467b48Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 409467b48Spatrick // See https://llvm.org/LICENSE.txt for license information. 509467b48Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 609467b48Spatrick // 709467b48Spatrick //===----------------------------------------------------------------------===// 809467b48Spatrick /// 909467b48Spatrick /// \file 1009467b48Spatrick /// This file contains the declaration of the WebAssembly-specific 1109467b48Spatrick /// manager for DebugValues associated with the specific MachineInstr. 1209467b48Spatrick /// 1309467b48Spatrick //===----------------------------------------------------------------------===// 1409467b48Spatrick 1509467b48Spatrick #ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYDEBUGVALUEMANAGER_H 1609467b48Spatrick #define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYDEBUGVALUEMANAGER_H 1709467b48Spatrick 1809467b48Spatrick #include "llvm/ADT/SmallVector.h" 1909467b48Spatrick 2009467b48Spatrick namespace llvm { 2109467b48Spatrick 2209467b48Spatrick class MachineInstr; 2309467b48Spatrick 2409467b48Spatrick class WebAssemblyDebugValueManager { 2509467b48Spatrick SmallVector<MachineInstr *, 2> DbgValues; 26*73471bf0Spatrick unsigned CurrentReg; 2709467b48Spatrick 2809467b48Spatrick public: 2909467b48Spatrick WebAssemblyDebugValueManager(MachineInstr *Instr); 3009467b48Spatrick 3109467b48Spatrick void move(MachineInstr *Insert); 3209467b48Spatrick void updateReg(unsigned Reg); 3309467b48Spatrick void clone(MachineInstr *Insert, unsigned NewReg); 3409467b48Spatrick void replaceWithLocal(unsigned LocalId); 3509467b48Spatrick }; 3609467b48Spatrick 3709467b48Spatrick } // end namespace llvm 3809467b48Spatrick 3909467b48Spatrick #endif 40