We currently require SCEV, which requires DT/LI. Those are expensive to compute, but the pass only runs for functions that have the safestack attribute.
Compute DT/LI to build SCEV lazily, only when the pass is actually going to transform the function.
This updates a test I added in my local branch, that checks the entire O0 llc x86 pipeline. It's a little overzealous, but hopefully that makes changes to the O0 pipeline obvious; it's easy to require expensive passes, and this helps make informed decisions.