[OSLogOptimization] emitCodeForSymbolicValue
should not attempt generating code for closures created by callers of os_log
#30893
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.
Make
emitCodeForSymbolicValue
generate code for closures iff the closure is not created by the caller function where the code is generated. Otherwise, when the closure is createdby the caller, just reuse it after copying and extending its lifetime.
Before this change new closures were created as long as all captures of the closures were symbolic constants. This patch updates it so that even if all captures are symbolic constants no code is generated for closures that are already available in the caller. This avoids doing
needless work and also fixes the following bug, which arises because the
emitCodeForSymbolicValue
does not handle all possible constants (particularly, metatype constants) that are tracked by the constant evaluator .rdar://problem/61465764