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 10
10
#include < cassert>
11
11
#include < mlir/Analysis/DataFlow/LivenessAnalysis.h>
12
12
13
- #include < mlir/Analysis/DataFlow/ConstantPropagationAnalysis.h>
14
- #include < mlir/Analysis/DataFlow/DeadCodeAnalysis.h>
15
13
#include < mlir/Analysis/DataFlow/SparseAnalysis.h>
14
+ #include < mlir/Analysis/DataFlow/Utils.h>
16
15
#include < mlir/Analysis/DataFlowFramework.h>
17
16
#include < mlir/IR/Operation.h>
18
17
#include < mlir/IR/Value.h>
@@ -249,8 +248,7 @@ void LivenessAnalysis::setToExitState(Liveness *lattice) {
249
248
RunLivenessAnalysis::RunLivenessAnalysis (Operation *op) {
250
249
SymbolTableCollection symbolTable;
251
250
252
- solver.load <DeadCodeAnalysis>();
253
- solver.load <SparseConstantPropagation>();
251
+ loadBaselineAnalyses (solver);
254
252
solver.load <LivenessAnalysis>(symbolTable);
255
253
(void )solver.initializeAndRun (op);
256
254
}
Original file line number Diff line number Diff line change 5
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
6
//
7
7
// ===----------------------------------------------------------------------===//
8
- #include " mlir/Analysis/DataFlow/ConstantPropagationAnalysis.h"
9
- #include " mlir/Analysis/DataFlow/DeadCodeAnalysis.h"
10
8
#include " mlir/Analysis/DataFlow/SparseAnalysis.h"
9
+ #include " mlir/Analysis/DataFlow/Utils.h"
11
10
#include " mlir/Analysis/DataFlowFramework.h"
12
11
#include " mlir/Dialect/GPU/IR/GPUDialect.h"
13
12
#include " mlir/Dialect/GPU/Utils/DistributionUtils.h"
@@ -620,8 +619,7 @@ class RunLayoutInfoPropagation {
620
619
621
620
RunLayoutInfoPropagation (Operation *op) : target(op) {
622
621
SymbolTableCollection symbolTable;
623
- solver.load <DeadCodeAnalysis>();
624
- solver.load <SparseConstantPropagation>();
622
+ loadBaselineAnalyses (solver);
625
623
solver.load <LayoutInfoPropagation>(symbolTable);
626
624
(void )solver.initializeAndRun (op);
627
625
}
Original file line number Diff line number Diff line change 13
13
#include " TestDenseDataFlowAnalysis.h"
14
14
#include " TestDialect.h"
15
15
#include " TestOps.h"
16
- #include " mlir/Analysis/DataFlow/ConstantPropagationAnalysis.h"
17
- #include " mlir/Analysis/DataFlow/DeadCodeAnalysis.h"
18
16
#include " mlir/Analysis/DataFlow/DenseAnalysis.h"
17
+ #include " mlir/Analysis/DataFlow/Utils.h"
19
18
#include " mlir/Analysis/DataFlowFramework.h"
20
19
#include " mlir/IR/Builders.h"
21
20
#include " mlir/IR/SymbolTable.h"
@@ -283,9 +282,8 @@ struct TestNextAccessPass
283
282
284
283
auto config = DataFlowConfig ().setInterprocedural (interprocedural);
285
284
DataFlowSolver solver (config);
286
- solver. load <DeadCodeAnalysis>( );
285
+ loadBaselineAnalyses (solver );
287
286
solver.load <NextAccessAnalysis>(symbolTable, assumeFuncReads);
288
- solver.load <SparseConstantPropagation>();
289
287
solver.load <UnderlyingValueAnalysis>();
290
288
if (failed (solver.initializeAndRun (op))) {
291
289
emitError (op->getLoc (), " dataflow solver failed" );
Original file line number Diff line number Diff line change 13
13
#include " TestDenseDataFlowAnalysis.h"
14
14
#include " TestDialect.h"
15
15
#include " TestOps.h"
16
- #include " mlir/Analysis/DataFlow/ConstantPropagationAnalysis.h"
17
- #include " mlir/Analysis/DataFlow/DeadCodeAnalysis.h"
18
16
#include " mlir/Analysis/DataFlow/DenseAnalysis.h"
17
+ #include " mlir/Analysis/DataFlow/Utils.h"
19
18
#include " mlir/Interfaces/SideEffectInterfaces.h"
20
19
#include " mlir/Pass/Pass.h"
21
20
#include " mlir/Support/LLVM.h"
@@ -240,8 +239,7 @@ struct TestLastModifiedPass
240
239
Operation *op = getOperation ();
241
240
242
241
DataFlowSolver solver (DataFlowConfig ().setInterprocedural (interprocedural));
243
- solver.load <DeadCodeAnalysis>();
244
- solver.load <SparseConstantPropagation>();
242
+ loadBaselineAnalyses (solver);
245
243
solver.load <LastModifiedAnalysis>(assumeFuncWrites);
246
244
solver.load <UnderlyingValueAnalysis>();
247
245
if (failed (solver.initializeAndRun (op)))
Original file line number Diff line number Diff line change 6
6
//
7
7
// ===----------------------------------------------------------------------===//
8
8
9
- #include " mlir/Analysis/DataFlow/ConstantPropagationAnalysis.h"
10
- #include " mlir/Analysis/DataFlow/DeadCodeAnalysis.h"
11
9
#include " mlir/Analysis/DataFlow/SparseAnalysis.h"
10
+ #include " mlir/Analysis/DataFlow/Utils.h"
12
11
#include " mlir/Dialect/MemRef/IR/MemRef.h"
13
12
#include " mlir/Interfaces/SideEffectInterfaces.h"
14
13
#include " mlir/Pass/Pass.h"
@@ -182,8 +181,7 @@ struct TestWrittenToPass
182
181
SymbolTableCollection symbolTable;
183
182
184
183
DataFlowSolver solver (DataFlowConfig ().setInterprocedural (interprocedural));
185
- solver.load <DeadCodeAnalysis>();
186
- solver.load <SparseConstantPropagation>();
184
+ loadBaselineAnalyses (solver);
187
185
solver.load <WrittenToAnalysis>(symbolTable, assumeFuncWrites);
188
186
if (failed (solver.initializeAndRun (op)))
189
187
return signalPassFailure ();
You can’t perform that action at this time.
0 commit comments