Revision 4faf28a83e9fd6c02fd03abc23daf9ea4dcf3a43 authored by Keno Fischer on 15 September 2022, 02:57:54 UTC, committed by Keno Fischer on 15 September 2022, 03:14:28 UTC
Currently we represent an unknown :static_parameter, as `Any`.
However, we actually have a fair bit of additional information
about it. In particular, a value that came from a static parameter
must have been a `valid_tparam` and thus if it's used in `apply_type`
again, we're guaranteed that such a use will be nothrow. This adds
a special lattice element to encode this set of values. The primary
benefit is to be able to prove the nothrow fact about many more
apply_type calls and thus cut down the size of the IR. That said,
at the moment, we cannot prove nothrow for unknown `:static_parameter`
either, but that's a separate bit of work (and we need to do both
to really be able to eliminate common patterns).
1 parent f7dea04
History
File Mode Size
ssair
abstractinterpretation.jl -rw-r--r-- 117.0 KB
abstractlattice.jl -rw-r--r-- 6.3 KB
bootstrap.jl -rw-r--r-- 2.0 KB
cicache.jl -rw-r--r-- 2.4 KB
compiler.jl -rw-r--r-- 5.2 KB
effects.jl -rw-r--r-- 9.6 KB
inferenceresult.jl -rw-r--r-- 9.9 KB
inferencestate.jl -rw-r--r-- 19.0 KB
methodtable.jl -rw-r--r-- 6.6 KB
optimize.jl -rw-r--r-- 35.0 KB
parsing.jl -rw-r--r-- 791 bytes
stmtinfo.jl -rw-r--r-- 5.6 KB
tfuncs.jl -rw-r--r-- 88.8 KB
typeinfer.jl -rw-r--r-- 44.0 KB
typelattice.jl -rw-r--r-- 20.2 KB
typelimits.jl -rw-r--r-- 30.8 KB
types.jl -rw-r--r-- 11.2 KB
typeutils.jl -rw-r--r-- 14.0 KB
utilities.jl -rw-r--r-- 14.1 KB
validation.jl -rw-r--r-- 10.8 KB

back to top