More complicated TYPEP tests are marginally transparent to type propagation
authorPaul Khuong <pvk@pvk.ca>
Thu, 24 Oct 2013 02:36:17 +0000 (22:36 -0400)
committerPaul Khuong <pvk@pvk.ca>
Mon, 4 Nov 2013 17:36:07 +0000 (12:36 -0500)
commit8be78b41ac1695e1c9b5d7f6c8bd41e3c7e6e6fc
treec77e048b37bafc22414bbfc6177c3754e9ff3541
parentce6c2726bfb08211d6d281fdf070490110bdc374
More complicated TYPEP tests are marginally transparent to type propagation

Expansions for TYPEP are wrapped in %typep-wrapper, a fancy identity. The
additional arguments track what value is being tested for what type, which
helps inform constraint propagation, as well as detecting redundant type
tests.

Such a wrapper is a hindrance to lower level control flow rewriting that are
essential for decent code generation. After a single pass of constraint
propagation, the wrapper evaporates and the TYPEP expansion becomes as opaque
as it is now.
NEWS
src/compiler/fndb.lisp
src/compiler/ir2tran.lisp
src/compiler/typetran.lisp
tests/compiler.pure.lisp