[compiler] New inference repros/fixes #33584
Open
+264
−108
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.
Adds a mechanism where if we can't determine a precise set of aliasing (data flow) effects for a function signature, to fall back to treating function expressions as general-purpose mutable values. Concretely:
InferMutationAliasingEffects
has an optimization where if you'reApply
-ing a specific, known function expression, that we use the inferred signature for that function. Now we only use this mode if we could infer a precise signature.InferFunctionExpressionAliasingSignature
now bails out if there is a phi with a backedge, since we weren't handling this case.See the repro for this case: i confirmed that it was previously incorrect.
Also adds a repro for a case of an invalid array length, which exposes the fact that InferFunctionExpressionAliasingSignatures is accumulating aliases w/o reducing them in any way. A complex enough function expression can lead to the accumulated array of effects overflowing the max array size. Fix in the next PR.