Make some instances of IF/IF conversion more direct
authorPaul Khuong <pvk@pvk.ca>
Tue, 21 May 2013 00:02:04 +0000 (20:02 -0400)
committerPaul Khuong <pvk@pvk.ca>
Tue, 21 May 2013 03:08:42 +0000 (23:08 -0400)
commit729ce57914183b7443e97544734cebe8198ae4cb
tree4b5c8689812549db309c0679d81cb18bb8eefcf6
parent9ce27ba26f45c2d59e2f95b616bd5d8f3eaeffdc
Make some instances of IF/IF conversion more direct

When faced with CFGs that look like (if (if ...) ...), we duplicate
the outer NULL test forward in the branches (and jump to the correct
branch, so very little code is duplicated).  However, this transform
depends on later ir1 optimisation to handle patterns like
(if (if ... nil t) ...).  Try and get them right with a specialised
rewrite to get good code even when ir1opt doesn't run until fixpoint.

Also, refactored the code a bit while working on it.
NEWS
src/compiler/ir1opt.lisp