Move the call around in function simplification so that LICM is run between Instcombine and loop unroll/vectorize
and add an extra call at the end of vector passes to align with non lto flow.
Details
- Reviewers
- None
Diff Detail
Event Timeline
llvm/lib/Passes/PassBuilderPipelines.cpp | ||
---|---|---|
561 | This LICM run is currently placed to reuse the MSSA analysis computed for MemCpyOpt and DSE. While the LTO change looks reasonable to me, the compile-time impact of this move is unlikely to be worthwhile under global consideration. |
llvm/lib/Passes/PassBuilderPipelines.cpp | ||
---|---|---|
561 | Looking at the changes in clang/test/CodeGen/thinlto-distributed-newpm.ll it does not look like MemorySSA is being run again. Does simplifycfg or instcombine invalidate the MSSA analysis? |
llvm/lib/Passes/PassBuilderPipelines.cpp | ||
---|---|---|
561 | Neither simplifycfg nor instcombine updates MSSA. |
llvm/lib/Passes/PassBuilderPipelines.cpp | ||
---|---|---|
561 | With the new pass manager, the pipeline tests no longer tell you whether analyses are invalidated (because invalidation is conditional, and pipeline tests run on trivial code). Only way to tell is by checking which analyses are declared as preserved, or empirically by checking compile-time impact. |
This LICM run is currently placed to reuse the MSSA analysis computed for MemCpyOpt and DSE. While the LTO change looks reasonable to me, the compile-time impact of this move is unlikely to be worthwhile under global consideration.