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 | TargetPassConfig *TPC, unsigned InputBBLimit, |
29 | unsigned InputDbgValLimit) = 0; |
30 | virtual ~LDVImpl() = default; |
31 | }; |
32 | |
33 | } // namespace SharedLiveDebugValues |
34 | |
35 | // Factory functions for LiveDebugValues implementations. |
36 | extern LDVImpl *makeVarLocBasedLiveDebugValues(); |
37 | extern LDVImpl *makeInstrRefBasedLiveDebugValues(); |
38 | |
39 | extern bool debuginfoShouldUseDebugInstrRef(const Triple &T); |
40 | |
41 | } // namespace llvm |
42 | |
43 | #endif // LLVM_LIB_CODEGEN_LIVEDEBUGVALUES_LIVEDEBUGVALUES_H |
44 | |