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
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 |
Computing file changes ...