Don't enforce (normal) emission for pragma(inline, true) function templates, and don't cull lambdas #3570
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.
[The remaining non-upstreamed piece from #3456.]
With the new
available_externally
emission into each referencing CU, the enforced regular emission from the module members tree shouldn't be required anymore.After adapting the
codegen/inlining_templates.d
lit-test accordingly (no IR definitions anymore in .ll file, becauseavailable_externally
doesn't make it there), I've noticed that a lambda in imported and inlinedcall_enforce_with_default_template_params()
wasn't emitted - it got culled byalreadyOrWillBeDefined()
.Function/delegate literals aren't culled anymore.