Subtype: avoid false alarm caused by eager forall_exists_subtype.#48441
Subtype: avoid false alarm caused by eager forall_exists_subtype.#48441N5N3 merged 3 commits intoJuliaLang:masterfrom
forall_exists_subtype.#48441Conversation
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_subtypealways earse the remainingRunion, which should not be ignored if the tailling subtype fails.This PR tries to keep the
Runionif the local subtyping has moderate scale.close #40865.
Note: this PR is based on #48410. The first commit is a squashed version.