Commit [dbe82b] Maximize Restore History

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.

Nikodemus Siivola Nikodemus Siivola 2010-11-18

changed src/code/late-type.lisp
changed src/compiler/srctran.lisp
changed tests/compiler.pure.lisp
changed NEWS
changed package-data-list.lisp-expr
changed version.lisp-expr
src/code/late-type.lisp Diff Switch to side-by-side view
Loading...
src/compiler/srctran.lisp Diff Switch to side-by-side view
Loading...
tests/compiler.pure.lisp Diff Switch to side-by-side view
Loading...
NEWS Diff Switch to side-by-side view
Loading...
package-data-list.lisp-expr Diff Switch to side-by-side view
Loading...
version.lisp-expr Diff Switch to side-by-side view
Loading...