//===- ConstantPropagationAnalysis.h - Constant propagation analysis ------===// // // 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 // //===----------------------------------------------------------------------===// // // This file implements constant propagation analysis. In this file are defined // the lattice value class that represents constant values in the program and // a sparse constant propagation analysis that uses operation folders to // speculate about constant values in the program. // //===----------------------------------------------------------------------===// #ifndef MLIR_ANALYSIS_DATAFLOW_CONSTANTPROPAGATIONANALYSIS_H #define MLIR_ANALYSIS_DATAFLOW_CONSTANTPROPAGATIONANALYSIS_H #include "mlir/Analysis/DataFlow/SparseAnalysis.h" #include <optional> namespace mlir { namespace dataflow { //===----------------------------------------------------------------------===// // ConstantValue //===----------------------------------------------------------------------===// /// This lattice value represents a known constant value of a lattice. class ConstantValue { … }; //===----------------------------------------------------------------------===// // SparseConstantPropagation //===----------------------------------------------------------------------===// /// This analysis implements sparse constant propagation, which attempts to /// determine constant-valued results for operations using constant-valued /// operands, by speculatively folding operations. When combined with dead-code /// analysis, this becomes sparse conditional constant propagation (SCCP). class SparseConstantPropagation : public SparseForwardDataFlowAnalysis<Lattice<ConstantValue>> { … }; } // end namespace dataflow } // end namespace mlir #endif // MLIR_ANALYSIS_DATAFLOW_CONSTANTPROPAGATIONANALYSIS_H