Fix inference precision regression for functions returning PartialStruct #38731
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.
Consider the included test case:
The function
f_partial_struct_constprop
used to infer toTuple{Int, Int}
be eligible for constprop and then get improved to
Const((2,2))
. However,at some point we sharpened the original inference to
PartialStrict((::Int, 2))
,which caused an early-out that prevented the consideration of this method
for constant propagation purposes, regressing the overall inference result
to
Tuple{Int, Int}
. Fix that by allowingPartialStruct
to pass throughthe early out. I'm not seeing any impact on inference times.