[LLVMdev] GSoC 2009 application

Benoit Boissinot bboissin+llvm at gmail.com
Sun Mar 29 16:39:04 PDT 2009


On Mon, Mar 30, 2009 at 1:05 AM, Eli Friedman <eli.friedman at gmail.com> wrote:
> On Sun, Mar 29, 2009 at 3:33 PM, Benoit Boissinot
> <bboissin+llvm at gmail.com> wrote:
>> While it is not described in the litterature, I don't think you need
>> to introduce a new
>> function:
>>      x0 = ...
>>  x1, x2 = \sigma (x0)
>>         |
>>    +----+------+
>>    |           |
>>    v           v
>>  ... = x1    ... = x2
>>
>> Can be transformed to:
>>
>>         x0 = ...
>>            |
>>    +-------+------+
>>    |              |
>>    v              v
>>  x1 = \phi(x0)  x2 = \phi(x0)
>>
>> This comes from the fact that the sigma function, like the phi, function has
>> the semantic that the copies are done on the edges.
>
> This is assuming you run a pass like BreakCriticalEdges first?  Looks
> like it would work.  My concern here would be performance...

You don't need to break any edges, the copies are "semantically" done on
the edge. When you have a critical edge, you can simply fold the sigma into
the following phi's.

Where is the performance a concern? Using phi's instead of sigma's? Or all
the new variables introduced by SSI? (I think that's a real concern,
if I remember
correctly the numbers from Ananian and Singer).

regards,

Benoit




More information about the llvm-dev mailing list