[flang-commits] [flang] 81f5098 - [flang] Enable optimizeEmptyElementals for BufferizeHLFIR pass. (#124982)
via flang-commits
flang-commits at lists.llvm.org
Thu Jan 30 07:45:55 PST 2025
Author: Slava Zakharin
Date: 2025-01-30T07:45:51-08:00
New Revision: 81f50989016a16f2d9e93cd220a89f1af851dfda
URL: https://github.com/llvm/llvm-project/commit/81f50989016a16f2d9e93cd220a89f1af851dfda
DIFF: https://github.com/llvm/llvm-project/commit/81f50989016a16f2d9e93cd220a89f1af851dfda.diff
LOG: [flang] Enable optimizeEmptyElementals for BufferizeHLFIR pass. (#124982)
Enable the option under opt-for-speed. Elementals with shapes
like `(0, HUGE)` should run faster.
Added:
Modified:
flang/lib/Optimizer/Passes/Pipelines.cpp
Removed:
################################################################################
diff --git a/flang/lib/Optimizer/Passes/Pipelines.cpp b/flang/lib/Optimizer/Passes/Pipelines.cpp
index 1cc3f0b81c20ad..d55ad9e603ffaf 100644
--- a/flang/lib/Optimizer/Passes/Pipelines.cpp
+++ b/flang/lib/Optimizer/Passes/Pipelines.cpp
@@ -245,7 +245,15 @@ void createHLFIRToFIRPassPipeline(mlir::PassManager &pm, bool enableOpenMP,
}
pm.addPass(hlfir::createLowerHLFIROrderedAssignments());
pm.addPass(hlfir::createLowerHLFIRIntrinsics());
- pm.addPass(hlfir::createBufferizeHLFIR());
+
+ hlfir::BufferizeHLFIROptions bufferizeOptions;
+ // For opt-for-speed, avoid running any of the loops resulting
+ // from hlfir.elemental lowering, if the result is an empty array.
+ // This helps to avoid long running loops for elementals with
+ // shapes like (0, HUGE).
+ if (optLevel.isOptimizingForSpeed())
+ bufferizeOptions.optimizeEmptyElementals = true;
+ pm.addPass(hlfir::createBufferizeHLFIR(bufferizeOptions));
// Run hlfir.assign inlining again after BufferizeHLFIR,
// because the latter may introduce new hlfir.assign operations,
// e.g. for copying an array into a temporary due to
More information about the flang-commits
mailing list