Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.forth > #25621

Re: RAFTS beyond basic blocks; handling phi

From "Alex McDonald" <blog@rivadpm.com>
Newsgroups comp.lang.forth
Subject Re: RAFTS beyond basic blocks; handling phi
Date 2013-09-11 12:07 +0100
Organization A noiseless patient Spider
Message-ID <l0pitb$ku2$1@dont-email.me> (permalink)
References <l0neru$oj5$1@dont-email.me> <1l908fy.v82wwcgm7lykN%awegel@arcor.de> <l0ph20$biq$1@dont-email.me> <A7-dnQ_uqZiY1q3PnZ2dnUVZ_rednZ2d@supernews.com>

Show all headers | View raw


on 11/09/2013 11:50:47, Andrew Haley wrote:
> Alex McDonald <blog@rivadpm.com> wrote:
>>
>> One of the things I'm finding about stack based languages to SSA based
>> intermediate code is that a lot of the literature on compiler
>> construction just doesn't apply. The obvious one for Forth is parsing,
>> where classical texts devote much of their bulk to building abstract
>> syntax trees, but there are others that don't apply such as analysis for
>> dead code elimination. With a stack based approach, < 1 2 3 + + drop >
>> eliminates itself automatically. The same is true of phi placement;
>> conceptually, it's hugely simplified and doesn't appear to require the
>> complex algorithms I've been studying.
> 
> Don't forget about locals: many Forth seem to regard them as
> second-class citizens, but you don't have to,
> 
> Andrew.

They turn out to be trivial. All that's required on declaration is an SSA
entry for a fetch from the stack into a virtual register, and a
dictionary entry for the name that returns the SSA entry when the local
is referenced. The only complication is generating possible phi entries
when reaching back into previous blocks for the SSA entry.

: x { a } a if 10 to a else 20 to a then ;

{ a } generates the name and the fetch. The first reference to a is in
the same entry block, but the second and third are in two dependent
blocks (both dominated by block first). 

The same phi mechanism used for managing block entries suffices. Locals
just melt away; they're just labelled SSA rather than anonymous entries.
 

Back to comp.lang.forth | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

RAFTS beyond basic blocks; handling phi "Alex McDonald" <blog@rivadpm.com> - 2013-09-10 16:46 +0100
  Re: RAFTS beyond basic blocks; handling phi awegel@arcor.de (Alex Wegel) - 2013-09-10 23:30 +0200
    Re: RAFTS beyond basic blocks; handling phi "Alex McDonald" <blog@rivadpm.com> - 2013-09-11 11:35 +0100
      Re: RAFTS beyond basic blocks; handling phi Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-09-11 05:50 -0500
        Re: RAFTS beyond basic blocks; handling phi "Alex McDonald" <blog@rivadpm.com> - 2013-09-11 12:07 +0100
          Re: RAFTS beyond basic blocks; handling phi "Alex McDonald" <blog@rivadpm.com> - 2013-09-11 12:50 +0100
            Re: RAFTS beyond basic blocks; handling phi anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-09-11 14:27 +0000
  Re: RAFTS beyond basic blocks; handling phi anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-09-11 10:55 +0000
    Re: RAFTS beyond basic blocks; handling phi "Alex McDonald" <blog@rivadpm.com> - 2013-09-11 13:10 +0100
      Re: RAFTS beyond basic blocks; handling phi Bernd Paysan <bernd.paysan@gmx.de> - 2013-09-11 20:33 +0200
        Re: RAFTS beyond basic blocks; handling phi "Alex McDonald" <blog@rivadpm.com> - 2013-09-11 19:53 +0100
          Re: RAFTS beyond basic blocks; handling phi Bernd Paysan <bernd.paysan@gmx.de> - 2013-09-11 21:57 +0200
            Re: RAFTS beyond basic blocks; handling phi anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-09-13 13:14 +0000
        Re: RAFTS beyond basic blocks; handling phi albert@spenarnc.xs4all.nl (Albert van der Horst) - 2013-09-12 10:39 +0000
      Re: RAFTS beyond basic blocks; handling phi "Alex McDonald" <blog@rivadpm.com> - 2013-09-12 23:53 +0100
        Re: RAFTS beyond basic blocks; handling phi "Alex McDonald" <blog@rivadpm.com> - 2013-09-12 23:55 +0100
          Re: RAFTS beyond basic blocks; handling phi "Alex McDonald" <blog@rivadpm.com> - 2013-09-13 10:16 +0100
        Re: RAFTS beyond basic blocks; handling phi anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-09-13 13:19 +0000
          Re: RAFTS beyond basic blocks; handling phi "Alex McDonald" <blog@rivadpm.com> - 2013-09-15 20:34 +0100
      Re: RAFTS beyond basic blocks; handling phi anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-09-13 11:38 +0000

csiph-web