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