Re: SSA construction and aliased variables (Felix Schroeter)
8 Feb 1998 13:34:13 -0500

          From comp.compilers

Related articles
SSA construction and aliased variables (Sergey Solyanik) (1998-01-17)
Re: SSA construction and aliased variables (Thomas Kistler) (1998-01-17)
Re: SSA construction and aliased variables (1998-02-08)
| List of all articles for this month |

From: (Felix Schroeter)
Newsgroups: comp.compilers
Date: 8 Feb 1998 13:34:13 -0500
Organization: Chaos
References: 98-01-067
Keywords: analysis, question

Sergey Solyanik <> wrote:

>However, if the code is
>if (a)
> {
> p = 1;
> }
> {
> p = 2;

> function_call();
> }

In one compiler using SSA form I know [1], this would be roughly translated
to the following:

r0: REGION(ref to all predecessor basic blocks) # basic block for if test
t0: READ(m0, a) # m0 is the initial memory state, from which a is read
t1: CONV_b(t0) # convert to boolean
t2: COND(t1) [r0] # conditional jump, pinned to region r0
t3: PROJ_f(t2) # control flow for "false"
t4: PROJ_t(t2) # control flow for "true"

r1: REGION(t4) # true branch
t5: CONST(1)
m1: WRITE(m0, p, t5) [r1]
t6: JMP # jump after the conditional - the target is determined by
                                    # the reference in REGION

r2: REGION(t3) # false branch
t7: CONST(2)
m2: WRITE(m0, p, t7) [r2]
t8: CALL(m2, function_call) # parameters would follow "function_call"
m3: PROJ_m' (t8) # t8 is a tupel of new memory state and the result value(s)
t9: JMP # after the conditional

r3: REGION(t6, t9) # code after the conditional
m4: PHI(m1, m3) # new memory state

          now an access to p would generate a statement like
t10: READ(m4, p)

Hope that helps a bit :-)

Regards, Felix.

[1] Fiasco, to be found at
        Fiasco is the result of a diploma thesis about
        the design and implementation of a Sather-K compiler

Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.