xref: /openbsd-src/gnu/llvm/llvm/lib/CodeGen/LiveDebugValues/LiveDebugValues.h (revision d415bd752c734aee168c4ee86ff32e8cc249eb16)
173471bf0Spatrick //===- LiveDebugValues.cpp - Tracking Debug Value MIs ---------*- C++ -*---===//
273471bf0Spatrick //
373471bf0Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
473471bf0Spatrick // See https://llvm.org/LICENSE.txt for license information.
573471bf0Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
673471bf0Spatrick //
773471bf0Spatrick //===----------------------------------------------------------------------===//
873471bf0Spatrick 
973471bf0Spatrick #ifndef LLVM_LIB_CODEGEN_LIVEDEBUGVALUES_LIVEDEBUGVALUES_H
1073471bf0Spatrick #define LLVM_LIB_CODEGEN_LIVEDEBUGVALUES_LIVEDEBUGVALUES_H
1173471bf0Spatrick 
1273471bf0Spatrick namespace llvm {
13*d415bd75Srobert class MachineDominatorTree;
14*d415bd75Srobert class MachineFunction;
15*d415bd75Srobert class TargetPassConfig;
16*d415bd75Srobert class Triple;
1773471bf0Spatrick 
1873471bf0Spatrick // Inline namespace for types / symbols shared between different
1973471bf0Spatrick // LiveDebugValues implementations.
2073471bf0Spatrick inline namespace SharedLiveDebugValues {
2173471bf0Spatrick 
2273471bf0Spatrick // Expose a base class for LiveDebugValues interfaces to inherit from. This
2373471bf0Spatrick // allows the generic LiveDebugValues pass handles to call into the
2473471bf0Spatrick // implementation.
2573471bf0Spatrick class LDVImpl {
2673471bf0Spatrick public:
27*d415bd75Srobert   virtual bool ExtendRanges(MachineFunction &MF, MachineDominatorTree *DomTree,
28*d415bd75Srobert                             TargetPassConfig *TPC, unsigned InputBBLimit,
29*d415bd75Srobert                             unsigned InputDbgValLimit) = 0;
30*d415bd75Srobert   virtual ~LDVImpl() = default;
3173471bf0Spatrick };
3273471bf0Spatrick 
3373471bf0Spatrick } // namespace SharedLiveDebugValues
3473471bf0Spatrick 
3573471bf0Spatrick // Factory functions for LiveDebugValues implementations.
3673471bf0Spatrick extern LDVImpl *makeVarLocBasedLiveDebugValues();
3773471bf0Spatrick extern LDVImpl *makeInstrRefBasedLiveDebugValues();
38*d415bd75Srobert 
39*d415bd75Srobert extern bool debuginfoShouldUseDebugInstrRef(const Triple &T);
40*d415bd75Srobert 
4173471bf0Spatrick } // namespace llvm
4273471bf0Spatrick 
4373471bf0Spatrick #endif // LLVM_LIB_CODEGEN_LIVEDEBUGVALUES_LIVEDEBUGVALUES_H
44