[flang-commits] [flang] [flang][StackArrays] run in parallel on different functions (PR #108842)
Tom Eccles via flang-commits
flang-commits at lists.llvm.org
Mon Sep 16 08:22:17 PDT 2024
https://github.com/tblah created https://github.com/llvm/llvm-project/pull/108842
Since #108562, StackArrays no longer has to create function declarations at the module level to use stacksave/stackrestore LLVM intrinsics. This will allow it to run in parallel on multiple functions at the same time.
>From 918398ef44e455d6250f57ea8a6da43e53e2cd83 Mon Sep 17 00:00:00 2001
From: Tom Eccles <tom.eccles at arm.com>
Date: Mon, 16 Sep 2024 15:13:16 +0000
Subject: [PATCH] [flang][StackArrays] run in parallel on different functions
Since #108562, StackArrays no longer has to create function declarations
at the module level to use stacksave/stackrestore LLVM intrinsics. This
will allow it to run in parallel on multiple functions at the same time.
---
flang/include/flang/Optimizer/Transforms/Passes.td | 2 +-
flang/lib/Optimizer/Transforms/StackArrays.cpp | 9 +--------
2 files changed, 2 insertions(+), 9 deletions(-)
diff --git a/flang/include/flang/Optimizer/Transforms/Passes.td b/flang/include/flang/Optimizer/Transforms/Passes.td
index 49bd4f5349a754..925ada0f9d3507 100644
--- a/flang/include/flang/Optimizer/Transforms/Passes.td
+++ b/flang/include/flang/Optimizer/Transforms/Passes.td
@@ -278,7 +278,7 @@ def ConstantArgumentGlobalisationOpt : Pass<"constant-argument-globalisation-opt
let dependentDialects = [ "fir::FIROpsDialect" ];
}
-def StackArrays : Pass<"stack-arrays", "mlir::ModuleOp"> {
+def StackArrays : Pass<"stack-arrays", "mlir::func::FuncOp"> {
let summary = "Move local array allocations from heap memory into stack memory";
let description = [{
Convert heap allocations for arrays, even those of unknown size, into stack
diff --git a/flang/lib/Optimizer/Transforms/StackArrays.cpp b/flang/lib/Optimizer/Transforms/StackArrays.cpp
index 1b929928dc7164..d9e7bd684d4600 100644
--- a/flang/lib/Optimizer/Transforms/StackArrays.cpp
+++ b/flang/lib/Optimizer/Transforms/StackArrays.cpp
@@ -225,7 +225,6 @@ class StackArraysPass : public fir::impl::StackArraysBase<StackArraysPass> {
llvm::StringRef getDescription() const override;
void runOnOperation() override;
- void runOnFunc(mlir::Operation *func);
private:
Statistic runCount{this, "stackArraysRunCount",
@@ -766,13 +765,7 @@ llvm::StringRef StackArraysPass::getDescription() const {
}
void StackArraysPass::runOnOperation() {
- mlir::ModuleOp mod = getOperation();
-
- mod.walk([this](mlir::func::FuncOp func) { runOnFunc(func); });
-}
-
-void StackArraysPass::runOnFunc(mlir::Operation *func) {
- assert(mlir::isa<mlir::func::FuncOp>(func));
+ mlir::func::FuncOp func = getOperation();
auto &analysis = getAnalysis<StackArraysAnalysisWrapper>();
const StackArraysAnalysisWrapper::AllocMemMap *candidateOps =
More information about the flang-commits
mailing list