]> granicus.if.org Git - llvm/commit
[PM] Flesh out almost all of the late loop passes.
authorChandler Carruth <chandlerc@gmail.com>
Fri, 27 Jan 2017 00:50:21 +0000 (00:50 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Fri, 27 Jan 2017 00:50:21 +0000 (00:50 +0000)
commitf8e4cd6c85e17f68316b93b556f6885e759f3539
tree576a1a02c93f77ad56ccbbe09652c5cf94d3b7c8
parent49c910dae19133b77acefc094e9b203dcaf609a2
[PM] Flesh out almost all of the late loop passes.

With this the per-module pass pipeline is *extremely* close to the
legacy PM. The missing pieces are:
- PruneEH (or some equivalent)
- ArgumentPromotion
- LoopLoadElimination
- LoopUnswitch

I'm going to work through those in essentially that order but this seems
like a worthwhile incremental step toward the end state.

One difference in what I have here from the legacy PM is that I've
consolidated some of the per-function passes at the very end of the
pipeline into the main optimization function pipeline. The intervening
passes are *really* uninteresting and so this seems very likely to have
any effect other than minor improvement to locality.

Note that there are still some failures in the test suite, but the
compiler doesn't crash or assert.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293241 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Passes/PassBuilder.cpp
test/Other/new-pm-defaults.ll