[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: wip-rtl, solstice edition

From: Andy Wingo
Subject: Re: wip-rtl, solstice edition
Date: Sun, 24 Jun 2012 14:21:34 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.4 (gnu/linux)

Hi Noah,

Thanks for the thoughts and the hack!

On Sat 23 Jun 2012 16:03, Noah Lavine <address@hidden> writes:

> It looks to me like the GLIL->assembly compiler spends most of its
> effort building constant tables, which I believe the RTL assembler
> does in the rtl branch.

The other things that it does, for the record:

 1) Allocate variable cache cells.  Related to the constant table, so
    perhaps the assembler can take care of this.

 2) Assembling the "meta" procedure.  Given that the debugging will be
    significantly different in the rtl branch, again the assembler might
    be able to understand inline debugging macro-instructions.

 3) Some instruction selection, based on whether the indexes of
    variables are in range or not.  Again, the assembler can do this.

So yes, I guess you are right.

Here are some things that I would like to be able to do, that we can't
do yet easily:

 1) Reorder basic blocks.  We should be able to do a topological sort of
    the blocks based on the dominator tree, and put cold blocks like
    bailouts at the end of a function.

 2) Simplify the control-flow graph.  Sometimes we have blocks that
    basically just jump to another block without doing anything.  We
    need to be able to reason about jumps.  We also need to be able to
    turn two-jump loops into one-jump loops.

 3) Fix order of evaluation.  A lower-level transformation could do
    that: either to CPS/ANF in Tree-IL itself, or to SSA.

 4) Loop optimizations.  For example, loop peeling: unrolling the first
    round through a loop can let CSE do a great job in the loop.  Loop
    peeling + CSE is basically LICM.

All of these things seem to indicate that we need some changes to
Tree-IL.  I don't know exactly what though, and this is something we can
work on after having a working tree-il->rtl compiler.

As food for thought, I really liked Kennedy's "Compiling with
Continuations, Continued" paper:

Happy hacking,


reply via email to

[Prev in Thread] Current Thread [Next in Thread]