9#ifndef LLVM_CODEGEN_ASSIGNMENTTRACKINGANALYSIS_H
10#define LLVM_CODEGEN_ASSIGNMENTTRACKINGANALYSIS_H
47 unsigned SingleVarLocEnd = 0;
65 return Variables[
static_cast<unsigned>(
ID)];
74 const auto *It = VarLocRecords.begin();
75 std::advance(It, SingleVarLocEnd);
80 auto Span = VarLocsBeforeInst.lookup(Before);
81 const auto *It = VarLocRecords.begin();
82 std::advance(It, Span.first);
88 auto Span = VarLocsBeforeInst.lookup(Before);
89 const auto *It = VarLocRecords.begin();
90 std::advance(It, Span.second);
125 std::unique_ptr<FunctionVarLocs> Results;
static bool runOnFunction(Function &F, bool PostInlining)
This header defines various interfaces for pass management in LLVM.
FunctionAnalysisManager FAM
Helper class to build FunctionVarLocs, since that class isn't easy to modify.
Represent the analysis usage information of a pass.
void setPreservesAll()
Set by analyses that do not transform their input at all.
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - This function should be overriden by passes that need analysis information to do t...
AssignmentTrackingAnalysis()
const FunctionVarLocs * getResults()
LLVM_ABI Result run(Function &F, FunctionAnalysisManager &FAM)
DebugAssignmentTrackingPrinterPass(raw_ostream &OS)
LLVM_ABI PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM)
Identifies a unique instance of a variable.
const DILocalVariable * getVariable() const
Data structure describing the variable locations in a function.
LLVM_ABI void print(raw_ostream &OS, const Function &Fn) const
const VarLocInfo * locs_begin(const Instruction *Before) const
First variable location definition that comes before Before.
const VarLocInfo * single_locs_begin() const
DILocalVariable * getDILocalVariable(const VarLocInfo *Loc) const
Return the DILocalVariable for the location definition represented by ID.
DILocalVariable * getDILocalVariable(VariableID ID) const
Return the DILocalVariable of the variable represented by ID.
const DebugVariable & getVariable(VariableID ID) const
Return the DebugVariable represented by ID.
const VarLocInfo * locs_end(const Instruction *Before) const
One past the last variable location definition that comes before Before.
const VarLocInfo * single_locs_end() const
One past the last single-location variable location definition.
LLVM_ABI void init(FunctionVarLocsBuilder &Builder)
A set of analyses that are preserved following a run of a transformation pass.
Lightweight class that wraps the location operand metadata of a debug intrinsic.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
This class implements an extremely fast bulk output stream that can only output to a stream.
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
This is an optimization pass for GlobalISel generic memory operations.
std::tuple< const DIScope *, const DIScope *, const DILocalVariable * > VarID
A unique key that represents a debug variable.
VariableID
Type wrapper for integer ID for Variables. 0 is reserved.
AnalysisManager< Function > FunctionAnalysisManager
Convenience typedef for the Function analysis manager.
A CRTP mix-in that provides informational APIs needed for analysis passes.
A special type used by analysis passes to provide an address that identifies that particular analysis...
A CRTP mix-in for passes that should not be skipped.
Variable location definition used by FunctionVarLocs.
RawLocationWrapper Values
llvm::VariableID VariableID