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 | |
12 | namespace llvm { |
13 | class MachineDominatorTree; |
14 | class MachineFunction; |
15 | class TargetPassConfig; |
16 | class Triple; |
17 | |
18 | // Inline namespace for types / symbols shared between different |
19 | // LiveDebugValues implementations. |
20 | inline 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. |
25 | class LDVImpl { |
26 | public: |
27 | virtual bool ExtendRanges(MachineFunction &MF, MachineDominatorTree *DomTree, |
28 | bool ShouldEmitDebugEntryValues, |
29 | unsigned InputBBLimit, |
30 | unsigned InputDbgValLimit) = 0; |
31 | virtual ~LDVImpl() = default; |
32 | }; |
33 | |
34 | } // namespace SharedLiveDebugValues |
35 | |
36 | // Factory functions for LiveDebugValues implementations. |
37 | extern LDVImpl *makeVarLocBasedLiveDebugValues(); |
38 | extern LDVImpl *makeInstrRefBasedLiveDebugValues(); |
39 | |
40 | extern bool debuginfoShouldUseDebugInstrRef(const Triple &T); |
41 | |
42 | } // namespace llvm |
43 | |
44 | #endif // LLVM_LIB_CODEGEN_LIVEDEBUGVALUES_LIVEDEBUGVALUES_H |
45 | |