LLVM 20.0.0git
|
#include "llvm/CodeGen/LiveDebugVariables.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/IntervalMap.h"
#include "llvm/ADT/MapVector.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/BinaryFormat/Dwarf.h"
#include "llvm/CodeGen/LexicalScopes.h"
#include "llvm/CodeGen/LiveInterval.h"
#include "llvm/CodeGen/LiveIntervals.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineDominators.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineOperand.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/SlotIndexes.h"
#include "llvm/CodeGen/TargetInstrInfo.h"
#include "llvm/CodeGen/TargetOpcodes.h"
#include "llvm/CodeGen/TargetRegisterInfo.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/CodeGen/VirtRegMap.h"
#include "llvm/Config/llvm-config.h"
#include "llvm/IR/DebugInfoMetadata.h"
#include "llvm/IR/DebugLoc.h"
#include "llvm/IR/Function.h"
#include "llvm/InitializePasses.h"
#include "llvm/Pass.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <cassert>
#include <iterator>
#include <map>
#include <memory>
#include <optional>
#include <utility>
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "livedebugvars" |
Typedefs | |
using | LocMap = IntervalMap< SlotIndex, DbgVariableValue, 4 > |
Map of where a user value is live to that value. | |
using | SpillOffsetMap = DenseMap< unsigned, unsigned > |
Map of stack slot offsets for spilled locations. | |
using | BlockSkipInstsMap = DenseMap< MachineBasicBlock *, MachineBasicBlock::iterator > |
Cache to save the location where it can be used as the starting position as input for calling MachineBasicBlock::SkipPHIsLabelsAndDebug. | |
Enumerations | |
enum | : unsigned { UndefLocNo = ~0U } |
Variables | |
static cl::opt< bool > | EnableLDV ("live-debug-variables", cl::init(true), cl::desc("Enable the live debug variables pass"), cl::Hidden) |
DEBUG_TYPE | |
Debug Variable | Analysis |
Debug Variable | false |
#define DEBUG_TYPE "livedebugvars" |
Definition at line 68 of file LiveDebugVariables.cpp.
Cache to save the location where it can be used as the starting position as input for calling MachineBasicBlock::SkipPHIsLabelsAndDebug.
This is to prevent MachineBasicBlock::SkipPHIsLabelsAndDebug from repeatedly searching the same set of PHIs/Labels/Debug instructions if it is called many times for the same block.
Definition at line 272 of file LiveDebugVariables.cpp.
using LocMap = IntervalMap<SlotIndex, DbgVariableValue, 4> |
Map of where a user value is live to that value.
Definition at line 261 of file LiveDebugVariables.cpp.
using SpillOffsetMap = DenseMap<unsigned, unsigned> |
Map of stack slot offsets for spilled locations.
Non-spilled locations are not added to the map.
Definition at line 265 of file LiveDebugVariables.cpp.
anonymous enum : unsigned |
Enumerator | |
---|---|
UndefLocNo |
Definition at line 97 of file LiveDebugVariables.cpp.
|
static |
Find an iterator for inserting a DBG_VALUE instruction.
Definition at line 1590 of file LiveDebugVariables.cpp.
References llvm::MachineBasicBlock::begin(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::end(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::find(), llvm::MachineBasicBlock::getFirstTerminator(), llvm::LiveIntervals::getInstructionFromIndex(), llvm::LiveIntervals::getMBBStartIdx(), I, Idx, MBB, MI, and llvm::MachineBasicBlock::SkipPHIsLabelsAndDebug().
|
static |
Find an iterator for inserting the next DBG_VALUE instruction (or end if no more insert locations found).
Definition at line 1636 of file LiveDebugVariables.cpp.
References llvm::any_of(), llvm::SmallVectorBase< Size_T >::empty(), llvm::MachineBasicBlock::end(), llvm::LiveIntervals::getInstructionIndex(), llvm::MachineOperand::getReg(), I, llvm::MachineBasicBlock::instr_end(), llvm::SlotIndex::isEarlierEqualInstr(), llvm::LiveIntervals::isNotInMIMap(), llvm::MachineOperand::isReg(), MBB, llvm::SmallVectorTemplateBase< T, bool >::push_back(), and TRI.
INITIALIZE_PASS_BEGIN | ( | LiveDebugVariables | , |
DEBUG_TYPE | , | ||
"Debug Variable Analysis" | , | ||
false | , | ||
false | |||
) |
|
static |
Definition at line 677 of file LiveDebugVariables.cpp.
References DL, and printDebugLoc().
Referenced by printDebugLoc(), and printExtendedName().
|
static |
Definition at line 698 of file LiveDebugVariables.cpp.
References DL, llvm::StringRef::empty(), OS, and printDebugLoc().
|
static |
Definition at line 1293 of file LiveDebugVariables.cpp.
References llvm::MachineBasicBlock::erase(), llvm::make_early_inc_range(), MBB, and MI.
STATISTIC | ( | NumInsertedDebugLabels | , |
"Number of DBG_LABELs inserted" | |||
) |
STATISTIC | ( | NumInsertedDebugValues | , |
"Number of DBG_VALUEs inserted" | |||
) |
Debug Variable Analysis |
Definition at line 84 of file LiveDebugVariables.cpp.
DEBUG_TYPE |
Definition at line 83 of file LiveDebugVariables.cpp.
|
static |
Debug Variable false |
Definition at line 84 of file LiveDebugVariables.cpp.