Re: SSA without phi

Tommy Thorn <>
4 May 2007 13:18:00 -0400

          From comp.compilers

Related articles
SSA without phi (2007-04-20)
Re: SSA without phi (Tommy Thorn) (2007-04-23)
Re: SSA without phi (2007-04-23)
SSA without phi (Inderaj Bains) (2007-04-23)
Re: SSA without phi (Chris F Clark) (2007-04-23)
Re: SSA without phi find@my.address.elsewhere (Matthias Blume) (2007-04-26)
Re: SSA without phi (2007-04-29)
Re: SSA without phi (Tommy Thorn) (2007-05-04)
Re: SSA without phi (2007-05-04)
Re: SSA without phi (Inderaj Bains) (2007-05-07)
Re: SSA without phi (Tommy Thorn) (2007-05-08)
Re: SSA without phi (2007-05-22)
| List of all articles for this month |

From: Tommy Thorn <>
Newsgroups: comp.compilers
Date: 4 May 2007 13:18:00 -0400
Organization: Compilers Central
References: 07-04-07507-04-152
Keywords: analysis, SSA
Posted-Date: 04 May 2007 13:18:00 EDT

On Apr 29, 4:00 pm, wrote:

> I just find it a bit unnatural to work with and I wondered whether
> there are any simpler representations (with equivalent
> advantages). Apparently that doesn't exist though...

Again, that's debatable. IMO, graph based representation tends to be
much easier to work with and a lot of stuff comes nearly for free. I'd
strongly recommend reading Paul Havlak's Thesis "Interprocedural
Symbolic Analysis" and also Marc-Michael Brandis' "Thesis on 'Small
and Fast Optimizing Compilers'". There's always more to say on that
subject, but it's a good start:

> Anyway, maybe I'm just not using the simplest approach and I need to
> get more familiar with SSA. I rename every variable by giving them a
> completely new name (actually just a number), and keeping their old
> name in a table. But a lot of tutorials on SSA give the variables an
> index, and after optimization just drop the index and remove phi-
> functions. Does that make the implementation more elegant?

AFAICT, that is likely to be incorrect in the face of any non-trivial
optimizations. Leaving SSA requires a real register allocation either

With a graph based representation you don't get too attached to names;
they are just pointers to nodes. If a full graph IR is too scary, you
can always just use them inter-basic block. I guarantee that it will
simplify your code.


Post a followup to this message

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