//===-- llvm/CodeGen/AssignmentTrackingAnalysis.h --------------*- C++ -*--===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLVM_CODEGEN_ASSIGNMENTTRACKINGANALYSIS_H #define LLVM_CODEGEN_ASSIGNMENTTRACKINGANALYSIS_H #include "llvm/IR/DebugInfoMetadata.h" #include "llvm/IR/DebugLoc.h" #include "llvm/IR/IntrinsicInst.h" #include "llvm/IR/PassManager.h" #include "llvm/Pass.h" namespace llvm { class Instruction; class raw_ostream; } // namespace llvm class FunctionVarLocsBuilder; namespace llvm { /// Type wrapper for integer ID for Variables. 0 is reserved. enum class VariableID : unsigned { … }; /// Variable location definition used by FunctionVarLocs. struct VarLocInfo { … }; /// Data structure describing the variable locations in a function. Used as the /// result of the AssignmentTrackingAnalysis pass. Essentially read-only /// outside of AssignmentTrackingAnalysis where it is built. class FunctionVarLocs { … }; class DebugAssignmentTrackingAnalysis : public AnalysisInfoMixin<DebugAssignmentTrackingAnalysis> { … }; class DebugAssignmentTrackingPrinterPass : public PassInfoMixin<DebugAssignmentTrackingPrinterPass> { … }; class AssignmentTrackingAnalysis : public FunctionPass { … }; } // end namespace llvm #endif // LLVM_CODEGEN_ASSIGNMENTTRACKINGANALYSIS_H