[flang] Enable SimplifyIntrinsics pass in driver.
authorSlava Zakharin <szakharin@nvidia.com>
Wed, 17 Aug 2022 20:00:57 +0000 (13:00 -0700)
committerSlava Zakharin <szakharin@nvidia.com>
Thu, 18 Aug 2022 15:55:27 +0000 (08:55 -0700)
The pass is enabled for O1/O2/O3 optlevels now.

Differential Revision: https://reviews.llvm.org/D132069

flang/include/flang/Tools/CLOptions.inc
flang/test/Driver/bbc-mlir-pass-pipeline.f90
flang/test/Driver/mlir-pass-pipeline.f90
flang/test/Fir/basic-program.fir

index 97bdddb..ec79902 100644 (file)
@@ -165,9 +165,11 @@ inline void createDefaultFIROptimizerPassPipeline(
   pm.addNestedPass<mlir::func::FuncOp>(fir::createCharacterConversionPass());
   pm.addPass(mlir::createCanonicalizerPass(config));
   pm.addPass(fir::createSimplifyRegionLitePass());
-  // Algebraic simplifications may increase code size.
-  if (optLevel.isOptimizingForSpeed())
+  if (optLevel.isOptimizingForSpeed()) {
+    // These passes may increase code size.
+    pm.addPass(fir::createSimplifyIntrinsicsPass());
     pm.addPass(fir::createAlgebraicSimplificationPass(config));
+  }
   pm.addPass(mlir::createCSEPass());
   fir::addMemoryAllocationOpt(pm);
 
index 388cc05..c71c36a 100644 (file)
@@ -23,6 +23,7 @@ end program
 
 ! CHECK-NEXT: Canonicalizer
 ! CHECK-NEXT: SimplifyRegionLite
+! CHECK-NEXT: SimplifyIntrinsics
 ! CHECK-NEXT: AlgebraicSimplification
 ! CHECK-NEXT: CSE
 ! CHECK-NEXT:   (S) 0 num-cse'd - Number of operations CSE'd
index ac70f05..17b9c0c 100644 (file)
@@ -26,6 +26,7 @@ end program
 
 ! ALL-NEXT: Canonicalizer
 ! ALL-NEXT: SimplifyRegionLite
+!  O2-NEXT: SimplifyIntrinsics
 !  O2-NEXT: AlgebraicSimplification
 ! ALL-NEXT: CSE
 ! ALL-NEXT:   (S) 0 num-cse'd - Number of operations CSE'd
index 7501f82..94b264c 100644 (file)
@@ -26,6 +26,7 @@ func.func @_QQmain() {
 
 // PASSES-NEXT: Canonicalizer
 // PASSES-NEXT: SimplifyRegionLite
+// PASSES-NEXT: SimplifyIntrinsics
 // PASSES-NEXT: AlgebraicSimplification
 // PASSES-NEXT: CSE
 // PASSES-NEXT:   (S) 0 num-cse'd - Number of operations CSE'd