Please sign in to comment.
allow approximating unions of numeric types
* Binding *APPROXIMATE-NUMERIC-UNIONS* does that. It must be bound only by callers of TYPE-UNION that know what they want -- in general (OR (INTEGER 1 2) (INTEGER 3 4)) => (INTEGER 1 4) is wrong, as (NOT (INTEGER 1 4)) doesn't include 3. But in special cases like deriving the return type of a function it can be done. * Rename MAKE-CANONICAL-UNION-TYPE MAKE-DERIVED-UNION-TYPE, and bind *A-N-U* there if we start accumulating an overly large union of numeric types. Definition of "overly large" can be adjusted via *DERIVED-NUMERIC-UNION-COMPLEXITY-LIMIT*. * Fixes lp#309448 and the recent compiler performance regression due to new CONCATENATE deftransform as reported on sbcl-devel.
- Loading branch information...
Showing with 98 additions and 20 deletions.