1//===- LiveDebugValues.cpp - Tracking Debug Value MIs ---------*- C++ -*---===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLVM_LIB_CODEGEN_LIVEDEBUGVALUES_LIVEDEBUGVALUES_H
10#define LLVM_LIB_CODEGEN_LIVEDEBUGVALUES_LIVEDEBUGVALUES_H
11
12namespace llvm {
13class MachineDominatorTree;
14class MachineFunction;
15class TargetPassConfig;
16class Triple;
17
18// Inline namespace for types / symbols shared between different
19// LiveDebugValues implementations.
20inline namespace SharedLiveDebugValues {
21
22// Expose a base class for LiveDebugValues interfaces to inherit from. This
23// allows the generic LiveDebugValues pass handles to call into the
24// implementation.
25class LDVImpl {
26public:
27 virtual bool ExtendRanges(MachineFunction &MF, MachineDominatorTree *DomTree,
28 TargetPassConfig *TPC, unsigned InputBBLimit,
29 unsigned InputDbgValLimit) = 0;
30 virtual ~LDVImpl() = default;
31};
32
33} // namespace SharedLiveDebugValues
34
35// Factory functions for LiveDebugValues implementations.
36extern LDVImpl *makeVarLocBasedLiveDebugValues();
37extern LDVImpl *makeInstrRefBasedLiveDebugValues();
38
39extern bool debuginfoShouldUseDebugInstrRef(const Triple &T);
40
41} // namespace llvm
42
43#endif // LLVM_LIB_CODEGEN_LIVEDEBUGVALUES_LIVEDEBUGVALUES_H
44