After some investigations on the pass, I have the following questions:
The pass aims to do the store/load forwarding and store elimination. Several passes in the LLVM mid-end are doing similar optimizations such as gvn. What would be the benefits or needs of implementing at the MLIR level?
The pass is based on the MLIR’s AffineScalarReplacement. What do we need for “productizing” the pass? Could you please elaborate on it further?
Productising includes all the work involved in switching ON the pass by default or with optimisation flags. This will involve making sure the pass works with all kinds of inputs and corner cases. If we switch ON the pass will all tests in the gfortran testsuite pass, will all the enabled applications pass? The pass was originally a prototype and some of the issues are discussed in the patch that upstreamed this. ⚙ D111288 [fir] Add data flow optimization pass