You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Avoid split `y::Union` when comparing with a forall var.
If `y` has no free typevar. Then `x <: y` wont cause any env change. Thus there's no need to split `y`.
* [compiler] Remove `ConstAPI` struct
`ConstAPI` predates the effect analysis framework, and was relying on an
ad-hoc implementation of effect analysis that only worked for functions
of less than 15 statements. As a result, it wasn't used much anymore,
but it could cause trouble with external `AbstractInterpreters` that may
want to cache additional code metadata within `CodeInstance`s.
This commit simply removes this, expecting that the existing effect
analysis will pick up the slack.
* Add short-circuit `has_offset_axes(::Array)`
This ensures that `Base.require_one_based_indexing()` is always fully
eliminated, since previously `has_offset_axes(::Array)` is
effect-tainted as non-consistent due to calculating `size(::Array)`.
This dodges the effect taint by adding this short-circuit, fixing broken
tests due to using effects analysis more extensively.
* Move coverage effects analysis into inference
Code coverage is implemented as an optimization pass that inserts an SSA
IR node during optimization, however effects analysis is perfomed during
inference, and so the desired effects tainting that should occur from
insertion of the code coverage IR node is ignored.
This teaches `InferenceState` to taint itself with the effects flag
`effects_free = ALWAYS_FALSE` when coverage is applicable to this
inference state's method.
We just assume that you don't want code coverage if you're using this
constructor. This may not always be true.
---------
Co-authored-by: N5N3 <[email protected]>
Co-authored-by: Oscar Smith <[email protected]>
0 commit comments