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
constprop: Add facility for widening arguments before constprop (#54036)
There are various situations where we may want to constprop with
something other than the most precise concrete arguments in order to
make the resulting cache more useful to other call sites. One particular
example of this might be a method where non-concrete inference already
discovered that one argument is unused:
```
function foo(a, b::DispatchOnly)
expensive_to_compile(a)
end
```
Right now, we will generally perform constprop for every different value
of `b`, even though we already have the information that `b` is unused.
Another example is external absints that may want to treat certain types
fully symbolically. They may want to substitute concrete values for an
abstract domain.
This adds the facility to do both of these things by
1. Adding an appropriate interp hook in the constprop path
2. Adding a WidendedSimpleArgtypes wrapper that's like SimpleArgtypes
but works around an issue where we would override cache information
using values from concrete eval, which is not legal if the argtypes were
widened.
0 commit comments