This is an archive of the discontinued LLVM Phabricator instance.

[ValueTracking] Lower dom-conditions-dom-blocks and dom-conditions-max-uses thresholds
ClosedPublic

Authored by igor-laevsky on Sep 29 2015, 7:40 AM.

Details

Summary

On some of our benchmarks this change shows about 50% compile time improvement without any noticeable performance difference.

Diff Detail

Repository
rL LLVM

Event Timeline

igor-laevsky retitled this revision from to [ValueTracking] Lower dom-conditions-dom-blocks and dom-conditions-max-uses thresholds.
igor-laevsky updated this object.
igor-laevsky added reviewers: reames, apilipenko.
igor-laevsky added a subscriber: llvm-commits.
apilipenko accepted this revision.Sep 29 2015, 7:50 AM
apilipenko edited edge metadata.
This revision is now accepted and ready to land.Sep 29 2015, 7:50 AM
This revision was automatically updated to reflect the committed changes.
reames edited edge metadata.Sep 29 2015, 8:11 AM

To give some more context here, this appears to be related to the use of isKnownNonNullAt in InstCombine to tag parameters as nonnull so that the inliner can exploit that fact. Dropping the max-uses parameter addresses the compile time impact we've observed without detrimental effects being observed.

We're also re-evaluating whether the context sensitivity in InstCombine is necessary at all. Igor added support to CorrelatedValueProp to do the same thing and InstCombine is run far more frequently than CVP is. It may be worth removing the handling from InstCombine entirely (or at least going back to the non-context sensative verserion), but we're still evaluating the impact of that change on our local tree.