class VLocTracker

Declaration

class VLocTracker { /* full declaration omitted */ };

Description

Collection of DBG_VALUEs observed when traversing a block. Records each variable and the value the DBG_VALUE refers to. Requires the machine value location dataflow algorithm to have run already, so that values can be identified.

Declared at: llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.h:689

Member Variables

public MapVector<llvm::DebugVariable, LiveDebugValues::DbgValue> Vars
Map DebugVariable to the latest Value it's defined to have. Needs to be a MapVector because we determine order-in-the-input-MIR from the order in this container. We only retain the last DbgValue in each block for each variable, to determine the blocks live-out variable value. The Vars container forms the transfer function for this block, as part of the dataflow analysis. The movement of values between locations inside of a block is handled at a much later stage, in the TransferTracker class.
public SmallDenseMap<llvm::DebugVariable, const llvm::DILocation*, 8> Scopes
public llvm::MachineBasicBlock* MBB = nullptr
public const LiveDebugValues::OverlapMap& OverlappingFragments
public LiveDebugValues::DbgValueProperties EmptyProperties

Method Overview

  • public VLocTracker(const LiveDebugValues::OverlapMap & O, const llvm::DIExpression * EmptyExpr)
  • public void clear()
  • public void considerOverlaps(const llvm::DebugVariable & Var, const llvm::DILocation * Loc)
  • public void defVar(const llvm::MachineInstr & MI, const LiveDebugValues::DbgValueProperties & Properties, Optional<LiveDebugValues::ValueIDNum> ID)
  • public void defVar(const llvm::MachineInstr & MI, const llvm::MachineOperand & MO)

Methods

VLocTracker(const LiveDebugValues::OverlapMap& O,
            const llvm::DIExpression* EmptyExpr)

Declared at: llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.h:706

Parameters

const LiveDebugValues::OverlapMap& O
const llvm::DIExpression* EmptyExpr

void clear()

Declared at: llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.h:770

void considerOverlaps(
    const llvm::DebugVariable& Var,
    const llvm::DILocation* Loc)

Declared at: llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.h:743

Parameters

const llvm::DebugVariable& Var
const llvm::DILocation* Loc

void defVar(
    const llvm::MachineInstr& MI,
    const LiveDebugValues::DbgValueProperties&
        Properties,
    Optional<LiveDebugValues::ValueIDNum> ID)

Declared at: llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.h:709

Parameters

const llvm::MachineInstr& MI
const LiveDebugValues::DbgValueProperties& Properties
Optional<LiveDebugValues::ValueIDNum> ID

void defVar(const llvm::MachineInstr& MI,
            const llvm::MachineOperand& MO)

Declared at: llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.h:726

Parameters

const llvm::MachineInstr& MI
const llvm::MachineOperand& MO