summaryrefslogtreecommitdiff
path: root/flang/tools
diff options
context:
space:
mode:
authorSlava Zakharin <szakharin@nvidia.com>2022-07-14 16:50:41 -0700
committerSlava Zakharin <szakharin@nvidia.com>2022-07-20 16:33:52 -0700
commit4fbd1d6c872e8228f23a6e13914222af40ca6461 (patch)
tree15f1dd1bdeb84e323d1e9c63ca2667df387f41ed /flang/tools
parented344c88774a46aa1f1eed6b7e36f42e73031c69 (diff)
downloadllvm-4fbd1d6c872e8228f23a6e13914222af40ca6461.tar.gz
[flang] Run algebraic simplification optimization pass.
Flang algebraic simplification pass will run algebraic simplification rewrite patterns for Math/Complex/etc. dialects. It is enabled under opt-for-speed optimization levels (i.e. for O1/O2/O3; Os/Oz will not enable it). With this change the FIR/MLIR optimization pipeline becomes affected by the -O* optimization level switches. Until now these switches only affected the middle-end and back-end. Differential Revision: https://reviews.llvm.org/D130035
Diffstat (limited to 'flang/tools')
-rw-r--r--flang/tools/bbc/bbc.cpp5
-rw-r--r--flang/tools/tco/tco.cpp4
2 files changed, 6 insertions, 3 deletions
diff --git a/flang/tools/bbc/bbc.cpp b/flang/tools/bbc/bbc.cpp
index cb8c78427a79..56ca8f79afee 100644
--- a/flang/tools/bbc/bbc.cpp
+++ b/flang/tools/bbc/bbc.cpp
@@ -47,6 +47,7 @@
#include "mlir/Pass/PassRegistry.h"
#include "mlir/Transforms/GreedyPatternRewriteDriver.h"
#include "mlir/Transforms/Passes.h"
+#include "llvm/Passes/OptimizationLevel.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/ErrorOr.h"
#include "llvm/Support/FileSystem.h"
@@ -255,8 +256,8 @@ static mlir::LogicalResult convertFortranSourceToMLIR(
// run the default canned pipeline
pm.addPass(std::make_unique<Fortran::lower::VerifierPass>());
- // Add default optimizer pass pipeline.
- fir::createDefaultFIROptimizerPassPipeline(pm);
+ // Add O2 optimizer pass pipeline.
+ fir::createDefaultFIROptimizerPassPipeline(pm, llvm::OptimizationLevel::O2);
}
if (mlir::succeeded(pm.run(mlirModule))) {
diff --git a/flang/tools/tco/tco.cpp b/flang/tools/tco/tco.cpp
index 0c9e2f528a3f..5fe0d8114742 100644
--- a/flang/tools/tco/tco.cpp
+++ b/flang/tools/tco/tco.cpp
@@ -24,6 +24,7 @@
#include "mlir/Pass/Pass.h"
#include "mlir/Pass/PassManager.h"
#include "mlir/Transforms/Passes.h"
+#include "llvm/Passes/OptimizationLevel.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/ErrorOr.h"
#include "llvm/Support/FileSystem.h"
@@ -111,7 +112,8 @@ compileFIR(const mlir::PassPipelineCLParser &passPipeline) {
if (mlir::failed(passPipeline.addToPipeline(pm, errorHandler)))
return mlir::failure();
} else {
- fir::createMLIRToLLVMPassPipeline(pm);
+ // Run tco with O2 by default.
+ fir::createMLIRToLLVMPassPipeline(pm, llvm::OptimizationLevel::O2);
fir::addLLVMDialectToLLVMPass(pm, out.os());
}