This is an archive of the discontinued LLVM Phabricator instance.

[PM] Flesh out almost all of the late loop passes.
ClosedPublic

Authored by chandlerc on Jan 24 2017, 8:04 PM.

Details

Summary

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.

Depends on D29113.

Diff Detail

Repository
rL LLVM

Event Timeline

chandlerc created this revision.Jan 24 2017, 8:04 PM
davide accepted this revision.Jan 25 2017, 7:44 AM

LGTM. If this sticks together, I'll make the same change to the LTO pipeline. I think it's a good improvement too and we can enable other passes one by one once they're ported.

This revision is now accepted and ready to land.Jan 25 2017, 7:44 AM
This revision was automatically updated to reflect the committed changes.