//===- TestDenseDataFlowAnalysis.h - Dataflow test utilities ----*- 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 // //===----------------------------------------------------------------------===// #include "mlir/Analysis/DataFlow/SparseAnalysis.h" #include "mlir/Analysis/DataFlowFramework.h" #include "mlir/IR/Value.h" #include "llvm/ADT/DenseMap.h" #include "llvm/Support/raw_ostream.h" #include <optional> namespace mlir { namespace dataflow { namespace test { /// This lattice represents a single underlying value for an SSA value. class UnderlyingValue { … }; class AdjacentAccess { … }; /// This lattice represents, for a given memory resource, the potential last /// operations that modified the resource. class AccessLatticeBase { … }; /// Define the lattice class explicitly to provide a type ID. struct UnderlyingValueLattice : public Lattice<UnderlyingValue> { … }; /// An analysis that uses forwarding of values along control-flow and callgraph /// edges to determine single underlying values for block arguments. This /// analysis exists so that the test analysis and pass can test the behaviour of /// the dense data-flow analysis on the callgraph. class UnderlyingValueAnalysis : public SparseForwardDataFlowAnalysis<UnderlyingValueLattice> { … }; } // namespace test } // namespace dataflow } // namespace mlir