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.

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.