File tree Expand file tree Collapse file tree 6 files changed +47
-20
lines changed
include/mlir/Analysis/DataFlow
test/lib/Analysis/DataFlow Expand file tree Collapse file tree 6 files changed +47
-20
lines changed Original file line number Diff line number Diff line change 1+ // ===-Utils.h - DataFlow utility functions ----------------------*- C++ -*-===//
2+ //
3+ // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4+ // See https://llvm.org/LICENSE.txt for license information.
5+ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+ //
7+ // ===----------------------------------------------------------------------===//
8+ //
9+ // This file defines utility functions for dataflow analyses.
10+ //
11+ // ===----------------------------------------------------------------------===//
12+
13+ #ifndef MLIR_ANALYSIS_DATAFLOW_UTILS_H
14+ #define MLIR_ANALYSIS_DATAFLOW_UTILS_H
15+
16+ #include " mlir/Analysis/DataFlow/ConstantPropagationAnalysis.h"
17+ #include " mlir/Analysis/DataFlow/DeadCodeAnalysis.h"
18+ #include " mlir/Analysis/DataFlowFramework.h"
19+
20+ namespace mlir {
21+ namespace dataflow {
22+
23+ // / Populates a DataFlowSolver with analyses that are required to ensure
24+ // / user-defined analyses are run properly.
25+ // /
26+ // / This helper is intended to be an interim fix until a more robust solution
27+ // / can be implemented in the DataFlow framework directly. Cf.
28+ // / https://discourse.llvm.org/t/mlir-dead-code-analysis/67568
29+ inline void loadBaselineAnalyses (DataFlowSolver &solver) {
30+ solver.load <dataflow::DeadCodeAnalysis>();
31+ solver.load <dataflow::SparseConstantPropagation>();
32+ }
33+
34+ } // end namespace dataflow
35+ } // end namespace mlir
36+
37+ #endif // MLIR_ANALYSIS_DATAFLOW_INTEGERANGEANALYSIS_H
Original file line number Diff line number Diff line change 1010#include < cassert>
1111#include < mlir/Analysis/DataFlow/LivenessAnalysis.h>
1212
13- #include < mlir/Analysis/DataFlow/ConstantPropagationAnalysis.h>
14- #include < mlir/Analysis/DataFlow/DeadCodeAnalysis.h>
1513#include < mlir/Analysis/DataFlow/SparseAnalysis.h>
14+ #include < mlir/Analysis/DataFlow/Utils.h>
1615#include < mlir/Analysis/DataFlowFramework.h>
1716#include < mlir/IR/Operation.h>
1817#include < mlir/IR/Value.h>
@@ -249,8 +248,7 @@ void LivenessAnalysis::setToExitState(Liveness *lattice) {
249248RunLivenessAnalysis::RunLivenessAnalysis (Operation *op) {
250249 SymbolTableCollection symbolTable;
251250
252- solver.load <DeadCodeAnalysis>();
253- solver.load <SparseConstantPropagation>();
251+ loadBaselineAnalyses (solver);
254252 solver.load <LivenessAnalysis>(symbolTable);
255253 (void )solver.initializeAndRun (op);
256254}
Original file line number Diff line number Diff line change 55// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
66//
77// ===----------------------------------------------------------------------===//
8- #include " mlir/Analysis/DataFlow/ConstantPropagationAnalysis.h"
9- #include " mlir/Analysis/DataFlow/DeadCodeAnalysis.h"
108#include " mlir/Analysis/DataFlow/SparseAnalysis.h"
9+ #include " mlir/Analysis/DataFlow/Utils.h"
1110#include " mlir/Analysis/DataFlowFramework.h"
1211#include " mlir/Dialect/GPU/IR/GPUDialect.h"
1312#include " mlir/Dialect/GPU/Utils/DistributionUtils.h"
@@ -620,8 +619,7 @@ class RunLayoutInfoPropagation {
620619
621620 RunLayoutInfoPropagation (Operation *op) : target(op) {
622621 SymbolTableCollection symbolTable;
623- solver.load <DeadCodeAnalysis>();
624- solver.load <SparseConstantPropagation>();
622+ loadBaselineAnalyses (solver);
625623 solver.load <LayoutInfoPropagation>(symbolTable);
626624 (void )solver.initializeAndRun (op);
627625 }
Original file line number Diff line number Diff line change 1313#include " TestDenseDataFlowAnalysis.h"
1414#include " TestDialect.h"
1515#include " TestOps.h"
16- #include " mlir/Analysis/DataFlow/ConstantPropagationAnalysis.h"
17- #include " mlir/Analysis/DataFlow/DeadCodeAnalysis.h"
1816#include " mlir/Analysis/DataFlow/DenseAnalysis.h"
17+ #include " mlir/Analysis/DataFlow/Utils.h"
1918#include " mlir/Analysis/DataFlowFramework.h"
2019#include " mlir/IR/Builders.h"
2120#include " mlir/IR/SymbolTable.h"
@@ -283,9 +282,8 @@ struct TestNextAccessPass
283282
284283 auto config = DataFlowConfig ().setInterprocedural (interprocedural);
285284 DataFlowSolver solver (config);
286- solver. load <DeadCodeAnalysis>( );
285+ loadBaselineAnalyses (solver );
287286 solver.load <NextAccessAnalysis>(symbolTable, assumeFuncReads);
288- solver.load <SparseConstantPropagation>();
289287 solver.load <UnderlyingValueAnalysis>();
290288 if (failed (solver.initializeAndRun (op))) {
291289 emitError (op->getLoc (), " dataflow solver failed" );
Original file line number Diff line number Diff line change 1313#include " TestDenseDataFlowAnalysis.h"
1414#include " TestDialect.h"
1515#include " TestOps.h"
16- #include " mlir/Analysis/DataFlow/ConstantPropagationAnalysis.h"
17- #include " mlir/Analysis/DataFlow/DeadCodeAnalysis.h"
1816#include " mlir/Analysis/DataFlow/DenseAnalysis.h"
17+ #include " mlir/Analysis/DataFlow/Utils.h"
1918#include " mlir/Interfaces/SideEffectInterfaces.h"
2019#include " mlir/Pass/Pass.h"
2120#include " mlir/Support/LLVM.h"
@@ -240,8 +239,7 @@ struct TestLastModifiedPass
240239 Operation *op = getOperation ();
241240
242241 DataFlowSolver solver (DataFlowConfig ().setInterprocedural (interprocedural));
243- solver.load <DeadCodeAnalysis>();
244- solver.load <SparseConstantPropagation>();
242+ loadBaselineAnalyses (solver);
245243 solver.load <LastModifiedAnalysis>(assumeFuncWrites);
246244 solver.load <UnderlyingValueAnalysis>();
247245 if (failed (solver.initializeAndRun (op)))
Original file line number Diff line number Diff line change 66//
77// ===----------------------------------------------------------------------===//
88
9- #include " mlir/Analysis/DataFlow/ConstantPropagationAnalysis.h"
10- #include " mlir/Analysis/DataFlow/DeadCodeAnalysis.h"
119#include " mlir/Analysis/DataFlow/SparseAnalysis.h"
10+ #include " mlir/Analysis/DataFlow/Utils.h"
1211#include " mlir/Dialect/MemRef/IR/MemRef.h"
1312#include " mlir/Interfaces/SideEffectInterfaces.h"
1413#include " mlir/Pass/Pass.h"
@@ -182,8 +181,7 @@ struct TestWrittenToPass
182181 SymbolTableCollection symbolTable;
183182
184183 DataFlowSolver solver (DataFlowConfig ().setInterprocedural (interprocedural));
185- solver.load <DeadCodeAnalysis>();
186- solver.load <SparseConstantPropagation>();
184+ loadBaselineAnalyses (solver);
187185 solver.load <WrittenToAnalysis>(symbolTable, assumeFuncWrites);
188186 if (failed (solver.initializeAndRun (op)))
189187 return signalPassFailure ();
You can’t perform that action at this time.
0 commit comments