The pass is enabled for O1/O2/O3 optlevels now.
Differential Revision: https://reviews.llvm.org/D132069
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);
! 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
! 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
// 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