This is an archive of the discontinued LLVM Phabricator instance.

[PM] Teach the loop PM to run LoopSimplify prior to the loop pipeline.
ClosedPublic

Authored by chandlerc on Jan 16 2017, 3:27 AM.

Details

Summary

This adds the last remaining core feature of the loop pass pipeline in
the new PM and removes the last of the really egregious hacks in the
LICM tests.

Sadly, this requires really substantial changes in the unittests in
order to provide and maintain simplified loops. This is particularly
hard because for example LoopSimplify will try to fold undef branches to
an ideal direction and simplify the loop accordingly.

Depends on D28743.

Diff Detail

Repository
rL LLVM

Event Timeline

chandlerc updated this revision to Diff 84537.Jan 16 2017, 3:27 AM
chandlerc retitled this revision from to [PM] Teach the loop PM to run LoopSimplify prior to the loop pipeline..
chandlerc updated this object.
chandlerc added a subscriber: llvm-commits.
davide added a subscriber: davide.Jan 16 2017, 6:04 PM
mzolotukhin accepted this revision.Jan 20 2017, 6:58 PM
mzolotukhin added a subscriber: mzolotukhin.

The changes look good to me!

Michael

This revision is now accepted and ready to land.Jan 20 2017, 6:58 PM

Thank so much, landing!

Also, I'll send you a patch with more docs about how the unittest works and we can see if that'll help going forward. I'm hoping to do it as part of factoring the unittest facilities into a library that we can use for other parts of the pass manager as well. Seems a good time to get some good docs in place.

This revision was automatically updated to reflect the committed changes.