Fix a functional redeferral issue involving inlinees. #1815
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.
A function that has been inlined in a non-deferred function cannot itself be deferred. This means that we need two passes over the set of active FunctionBody's to determine the set of legal candidates. The first pass closes over the set of candidates: the functional and heuristic rules are applied, and for each function that will not be redeferred, we (recursively) mark all its inlinees as non-candidates. The second pass redefers all the functions that have not be marked as non-candidates.