This is an archive of the discontinued LLVM Phabricator instance.

[x86/SLH] Major refactoring of SLH implementaiton. There are two big changes that are intertwined here:
ClosedPublic

Authored by chandlerc on Jul 17 2018, 8:15 AM.

Details

Summary
  1. Extracting the tracing of predicate state through the CFG to its own function.
  2. Creating a struct to manage the predicate state used throughout the pass.

Doing #1 necessitates and motivates the particular approach for #2 as
now the predicate management is spread across different functions
focused on different aspects of it. A number of simplifications then
fell out as a direct consequence.

I went with an Optional to make it more natural to construct the
MachineSSAUpdater object.

This is probably the single largest outstanding refactoring step I have.
Things get a bit more surgical from here. My current goal, beyond
generally making this maintainable long-term, is to implement several
improvements to how we do interprocedural tracking of predicate state.
But I don't want to do that until the predicate state management and
tracing is in reasonably clear state.

Diff Detail

Event Timeline

chandlerc created this revision.Jul 17 2018, 8:15 AM
echristo accepted this revision.Jul 17 2018, 3:47 PM

LGTM. Looks like a nice set of API simplifications.

-eric

This revision is now accepted and ready to land.Jul 17 2018, 3:47 PM
This revision was automatically updated to reflect the committed changes.