Skip to content
Snippets Groups Projects
Commit 1a0a7672 authored by dtc's avatar dtc
Browse files

Merge in the revised derive-type optimisers from Raymond Toy:

compiler/srctran.lisp

o  Replaced all of the old optimizer routines with new ones that should
work much better.  Optimizers should now handle all union types and most
member types.  NOTE:  for some reason a member type with both numbers
and non-numbers isn't quite handled correctly.  The optimizer is only
passed the elements of the member type that are numbers; it never sees
the non-number elements of the member type.

o  Fixed a bug in bound-func.  Since all of the FP traps are turned off,
we now need to check in case the function returns things like infinity
and convert them to nil.

o  Fixed a bug in the computation of bounds for rem.  Invalid intervals
were sometimes returned.

compiler/float-tran.lisp

o  Mods to handle the changes in srctran.lisp.

o  All of the optimizers (from propagate-float and propagate-fun) should
now handle union types and member types.

o  Fixed a bug in the atan optimizer for two args with at least one of
them not being a real.

o  For functions that return (or float (complex float)), we try to be
more careful and compute the bounds for the float part, since we usually
have them.  Not sure what we gain, though.

-=-=-=-

Plus some further cleanups and fixes by Douglas Crosher:

o Merge with the latest verion of float-trans: CIS transform; no
result types on complex function transforms.

o Can use a common scale-float-derive-type-aux function.

o complex-derive-type-aux-2 was broken, needed updating to handle
changes.

o For sqrt and log return an (or float complex) type if the argument
type includes 0.0 in its range as 0.0 = -0.0 so the argument may also
be -0.0.

o A number of the optimizers returned a complex float with invalid
intervals just copied from the argument - strip the intervals from the
returned type in these cases.

o Note no expt optimiser.
parent 55160a83
No related branches found
No related tags found
No related merge requests found
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment