0.9.8.2: constraint propagation
authorGabor Melis <mega@hotpop.com>
Wed, 28 Dec 2005 13:56:23 +0000 (13:56 +0000)
committerGabor Melis <mega@hotpop.com>
Wed, 28 Dec 2005 13:56:23 +0000 (13:56 +0000)
commitb34a3535ed7950a17e5dfe940285dcc10a814cb6
tree84c40677feade2d5a1fce9e96f87d332320da385
parentcbfca6d8c90bfd249e6bee6e3d9bba88a56c0312
0.9.8.2: constraint propagation
  * add (EQL LAMBDA-VAR LAMBDA-VAR) constraints on BIND and CSET
  * add cast and test constraints to all eql lambda vars
  * calculate the intersection of two lambda-var types when
    encountering (IF (EQL X Y) ...) and neither X or Y is a subtype of
    the other
  * there is now only one invocation of FIND-AND-PROPAGATE-CONSTRAINTS
  * since GEN depends on IN there is no COMPUTE-BLOCK-OUT shortcut
    anymore, a full FIND-CONSTRAINTS-IN-BLOCK is done
  * for blocks whose constraints won't be recalculated after the
    prepass (see LEADING-COMPONENT-BLOCKS) do what
    USE-RESULT-CONSTRAINTS would do is done on the prepass to save
    time
  * support test constraint propagation for blocks with with multiple
    predecessors
src/compiler/constraint.lisp
src/compiler/node.lisp
src/compiler/srctran.lisp
version.lisp-expr