From: Charles Z. <ka...@be...> - 2018-07-09 19:24:50
|
Hello clisp, For this period many correctness bugs in the new compiler were fixed, with multiple self compiles possible without any detectable oddities. A few new dataflow passes and better code generation has been implemented. Some highlights: - SSA conditional constant propagation, which can fold code like (lambda () (let ((i 0) a b c d) (values (and (setq a (setq i (1+ i))) (setq b (setq i (1+ i))) (setq c (setq i (1+ i))) (setq d (setq i (1+ i)))) i a b c d))) into (values 4 4 1 2 3 4). Very useful for macro heavy code. - Loop invariant hoisting. Useful for numeric code with arrays/matrices. - Prototype value numbering with Kildall. Good for some forms of redundant expression elimination. - Better dead code elimination detection with respect to multiple values. Code generation improvements: - Better instruction selection for branches - Inlined multiple-values instructions. No more consing and improved self compile time from 55 seconds to 42 seconds. - Inlined funcall - Much better instruction selection for various CALL instructions - Some form of basic block scheduling, to remove JMPs from LAP. - Extra LOAD/PUSH/STOREs eliminated. The code looks more like stack machine code. Some optimizations were made to make the compiler faster as well, by paying more attention to the speed of convergence of some dataflow analysis algorithms. Some goals for next period: - Using escape analysis to see when closures can be eliminated; e.g. by lambda lifting closed over values in non escaping nested functions. - Integrating value numbering analysis - Loop induction variable analysis - Making the compiler faster by ordering flow nodes properly in dataflow analysis. - Try to experiment with untyped instructions and type inference. - Local function inlining with Robert Strandh's partial inlining technique, which was recently presented at ELS. - Inlining in general. |
From: Jean L. <bu...@gn...> - 2018-07-09 20:22:42
|
Where do I get that development version? Jean On Mon, Jul 09, 2018 at 03:24:40PM -0400, Charles Zhang wrote: > Hello clisp, > > For this period many correctness bugs in the new compiler were fixed, > with multiple self compiles possible without any detectable oddities. > > A few new dataflow passes and better code generation has been > implemented. Some highlights: > > - SSA conditional constant propagation, which can fold code like > (lambda () (let ((i 0) a b c d) > (values > (and (setq a (setq i (1+ i))) > (setq b (setq i (1+ i))) > (setq c (setq i (1+ i))) > (setq d (setq i (1+ i)))) > i a b c d))) > into (values 4 4 1 2 3 4). Very useful for macro heavy code. > - Loop invariant hoisting. Useful for numeric code with arrays/matrices. > - Prototype value numbering with Kildall. Good for some forms of > redundant expression elimination. > - Better dead code elimination detection with respect to multiple values. > Code generation improvements: > - Better instruction selection for branches > - Inlined multiple-values instructions. No more consing and improved > self compile time from 55 seconds to 42 seconds. > - Inlined funcall > - Much better instruction selection for various CALL instructions > - Some form of basic block scheduling, to remove JMPs from LAP. > - Extra LOAD/PUSH/STOREs eliminated. The code looks more like stack > machine code. > > Some optimizations were made to make the compiler faster as well, by > paying more attention to the speed of convergence of some dataflow > analysis algorithms. > > Some goals for next period: > - Using escape analysis to see when closures can be eliminated; e.g. > by lambda lifting closed over values in non escaping nested functions. > - Integrating value numbering analysis > - Loop induction variable analysis > - Making the compiler faster by ordering flow nodes properly in > dataflow analysis. > - Try to experiment with untyped instructions and type inference. > - Local function inlining with Robert Strandh's partial inlining > technique, which was recently presented at ELS. > - Inlining in general. > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > clisp-devel mailing list > cli...@li... > https://lists.sourceforge.net/lists/listinfo/clisp-devel -- Jean Louis |