WebAssemblyDebugValueManager.h revision 353358
1234285Sdim// WebAssemblyDebugValueManager.h - WebAssembly DebugValue Manager -*- C++ -*-//
2234285Sdim//
3234285Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4234285Sdim// See https://llvm.org/LICENSE.txt for license information.
5234285Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6234285Sdim//
7234285Sdim//===----------------------------------------------------------------------===//
8234285Sdim///
9234285Sdim/// \file
10234285Sdim/// This file contains the declaration of the WebAssembly-specific
11234285Sdim/// manager for DebugValues associated with the specific MachineInstr.
12234285Sdim///
13234285Sdim//===----------------------------------------------------------------------===//
14234285Sdim
15234285Sdim#ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYDEBUGVALUEMANAGER_H
16234285Sdim#define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYDEBUGVALUEMANAGER_H
17249423Sdim
18249423Sdim#include "llvm/ADT/SmallVector.h"
19249423Sdim
20249423Sdimnamespace llvm {
21234285Sdim
22249423Sdimclass MachineInstr;
23234285Sdim
24234285Sdimclass WebAssemblyDebugValueManager {
25234285Sdim  SmallVector<MachineInstr *, 2> DbgValues;
26234285Sdim
27234285Sdimpublic:
28261991Sdim  WebAssemblyDebugValueManager(MachineInstr *Instr);
29261991Sdim
30234285Sdim  void move(MachineInstr *Insert);
31234285Sdim  void updateReg(unsigned Reg);
32234285Sdim  void clone(MachineInstr *Insert, unsigned NewReg);
33234285Sdim};
34234285Sdim
35234285Sdim} // end namespace llvm
36234285Sdim
37234285Sdim#endif
38234285Sdim