Added rewrite code to replace an expression with a literal if the type
authorStephen Adams <edu/mit/csail/zurich/adams>
Fri, 19 Jul 1996 23:32:03 +0000 (23:32 +0000)
committerStephen Adams <edu/mit/csail/zurich/adams>
Fri, 19 Jul 1996 23:32:03 +0000 (23:32 +0000)
commit64d1afaf83df16333dbeca9a9fed6a23b1f069c0
tree38f7b6ccf815dd04e1ef6d835dc47b3012ec2d5f
parent86a616eb7be04c5ef4e0b212bf778959066bed05
Added rewrite code to replace an expression with a literal if the type
system tells us what the value must be.  Most useful for
IF-predicates, as replacing <pred> by, e.g., (BEGIN <pred> '#T) allows
the dead code to be removed.

Added predicate code to yield a #T or #F value.  Previously the
predicate information was being used only in the branches of an if.
Obviously, it is nice to know when the predicate is always true or
false.

Tweaked with inference rules for EQ?/EQV?/EQUAL?.  This could be
better, for example, if (eq? x y) then we know the types must be in
the intersection.  This would require work in TYPEREW/PRED.
v8/src/compiler/midend/typerew.scm