1343171Sdim// WebAssemblyDebugValueManager.h - WebAssembly DebugValue Manager -*- C++ -*-//
2343171Sdim//
3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4353358Sdim// See https://llvm.org/LICENSE.txt for license information.
5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6343171Sdim//
7343171Sdim//===----------------------------------------------------------------------===//
8343171Sdim///
9343171Sdim/// \file
10343171Sdim/// This file contains the declaration of the WebAssembly-specific
11343171Sdim/// manager for DebugValues associated with the specific MachineInstr.
12343171Sdim///
13343171Sdim//===----------------------------------------------------------------------===//
14343171Sdim
15343171Sdim#ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYDEBUGVALUEMANAGER_H
16343171Sdim#define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYDEBUGVALUEMANAGER_H
17343171Sdim
18343171Sdim#include "llvm/ADT/SmallVector.h"
19343171Sdim
20343171Sdimnamespace llvm {
21343171Sdim
22343171Sdimclass MachineInstr;
23343171Sdim
24343171Sdimclass WebAssemblyDebugValueManager {
25343171Sdim  SmallVector<MachineInstr *, 2> DbgValues;
26343171Sdim
27343171Sdimpublic:
28343171Sdim  WebAssemblyDebugValueManager(MachineInstr *Instr);
29343171Sdim
30343171Sdim  void move(MachineInstr *Insert);
31343171Sdim  void updateReg(unsigned Reg);
32343171Sdim  void clone(MachineInstr *Insert, unsigned NewReg);
33360784Sdim  void replaceWithLocal(unsigned LocalId);
34343171Sdim};
35343171Sdim
36343171Sdim} // end namespace llvm
37343171Sdim
38343171Sdim#endif
39