Re: Interprocedural SSA form?

Florian Liekweg <liekweg@ipd.info.uni-karlsruhe.de>
2 Jun 2005 14:58:51 -0400

          From comp.compilers

Related articles
Interprocedural SSA form? devriese@cs.tcd.ie (Edsko de Vries) (2005-06-02)
Re: Interprocedural SSA form? jsinger@cs.man.ac.uk (Jeremy Singer) (2005-06-02)
Re: Interprocedural SSA form? liekweg@ipd.info.uni-karlsruhe.de (Florian Liekweg) (2005-06-02)
Re: Interprocedural SSA form? find@my.address.elsewhere (Matthias Blume) (2005-06-04)
Re: Interprocedural SSA form? jsinger@cs.man.ac.uk (Jeremy Singer) (2005-06-04)
| List of all articles for this month |

From: Florian Liekweg <liekweg@ipd.info.uni-karlsruhe.de>
Newsgroups: comp.compilers
Date: 2 Jun 2005 14:58:51 -0400
Organization: University of Karlsruhe, Germany
References: 05-06-011
Keywords: analysis
Posted-Date: 02 Jun 2005 14:58:51 EDT

Edsko de Vries wrote:
> When writing a compiler based around SSA, is every procedure converted
> to SSA form individually, or is it possible to create some sort of
> "super control flow graph" that incorporates procedures, and convert
> the entire thing to SSA form? Is there benefits/downsides to either
> approach? Is there some literature I can read on this topic?
>


Hi, Edsko,


this depends on what You are planning to do on the interprocedural
representation. For a whole-program analysis, we have found the
following idea(s) useful:


* Formal arguments in procedure f are nothing more than Phi-Functions
    for the actual parameters given to calls to f in other procedures.
* Return instructions (with a value) are 'inverse' to the argument
    Phi's in the sense that the return value of a call to f can be
    now written as an access to the return value of f.
* For a program analysis, you will probably take into account that
    analysis information gathered for a return instruction must be
    filtered: if g calls f, and accesses the return instruction of g,
    it may only pick up information computed from values prpagated into
    f from g. (if this is omitted, you propagate information along
    unrealizable paths, e.g. g and g' both call f, and g' values are
    propagated int the call to f, through f, and back ... into g'.)


With the first two points done before an analysis is started, and
the analysis itself extended by the third point, you get an inter-
procedural analysis 'for free'.


Good luck,
Florian
--
=======================================================================
Florian Liekweg | We resisted the temptation to develop what
IPD Universität Karlsruhe | the market needed at the time.
========================================[ Rich Seifert on Ethernet ]===


Post a followup to this message

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