[sil-mandatory-inliner] Decrease the compile time #4635
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
––– CCC Information –––
• Explanation: It is a compile-time speed improvement.
• Scope of Issue: Get rid of O(N^2) behavior in the mandatory inliner
• Origination: rdar://problem/27301540
• Risk: Very low. The patch has been on the master for a week without any regressions or correctness issues.
• Reviewed By: Bob Wilson
• Testing: Verified locally and using a CI @please test
• Directions for QA: Check that test files reported in the radar are now compiled rather quickly instead of taking many hours.
Detailed description
The inlining algorithm was rescanning the whole basic block after inlining a call, which resulted in O(N^2) time complexity. In some pathological cases like e.g. huge basic blocks with many thousands of calls this would lead to very long compile times which could takes hours to finish.
This change improves compile times by avoiding the rescanning of basic blocks containing the call which was inlined.
rdar://27818830