-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Subtype: avoid false alarm caused by eager forall_exists_subtype
.
#48441
Conversation
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
@nanosoldier |
Your package evaluation job has completed - possible new issues were detected. |
PkgEval looks good this time. |
If `Runion.more != 0` we‘d better not erase the local `Runion` as we need it if the subtyping fails after. This commit replaces `forall_exists_subtype` with a local version. It first tries `forall_exists_subtype` and estimates the "problem scale". If subtyping fails and the scale looks small then it switches to the slow path. TODO: At present, the "problem scale" only counts the number of checked `Lunion`s. But perhaps we need a more accurate result (e.g. sum of `Runion.depth`) Update subtype.c Update subtype.c
Make sure we don't forget the bound in `env`. (And we can fuse `local_forall_exists_subtype`)
This appears to have caused a significant loadtime regression in CUDA. X-ref: #48582 |
…uliaLang#48441) * Avoid earsing `Runion` within nested `forall_exists_subtype` If `Runion.more != 0` we‘d better not erase the local `Runion` as we need it if the subtyping fails after. This commit replaces `forall_exists_subtype` with a local version. It first tries `forall_exists_subtype` and estimates the "problem scale". If subtyping fails and the scale looks small then it switches to the slow path. TODO: At present, the "problem scale" only counts the number of checked `Lunion`s. But perhaps we need a more accurate result (e.g. sum of `Runion.depth`) * Change the reversed subtyping into a local check. Make sure we don't forget the bound in `env`. (And we can fuse `local_forall_exists_subtype`) * Optimization for non-union invariant parameter.
Nested
forall_exists_subtype
always earse the remainingRunion
, which should not be ignored if the tailling subtype fails.This PR tries to keep the
Runion
if the local subtyping has moderate scale.close #40865.
Note: this PR is based on #48410. The first commit is a squashed version.