This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[tree-ssa] unSSA questions and missing reference.


I am trying to self-educate myself in this area by reading some of the
literature and following what is being done on the treessa branch. So
please forgive me if these questions are naive or downright stupid.

First of all, shouldn't the top of treessa.c have a reference to

 BRIGGS, P., COOPER, K. D., HARVEY, T. J., AND SIMPSON, L. T. 1998.
 Practical improvements to the construction and destruction of static
 single assignment form. Software: Practice and Experience 28, 8
 (July), 859--881.
 http://citeseer.nj.nec.com/article/briggs98practical.html

Unless I am mistaken treessa.c implements the semi-pruned form
introduced therein.

Secondly, are there any non-obvious reasons why the unssa phase has
been left incomplete, i.e. Are there subtle gcc specific reasons why
introducing the appropriate temporaries is hard, or has it simply been
a lack of time? Is the current back-end able to coalesce the
temporaries where possible? The few papers and books I have looked at
all assume a coalescing graph-colouring register allocator will take
care of that.

Which algorithm do you envision being used for the unSSA phase?

1. Edge-split the SSA-form and then insert temporaries in each predecessor.
2. The more complex algorithm introduced in the above paper that also
works on critical edges. Briggs e.a. seem to not want to create new edges
because they do the unSSA at a very late stage in the compilation.
However that argument doesn't seem apply to treessa.
3. Something else. As I said I am not exactly widely read in this
area.

Thanks for taking the time to answer these.

Jan


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]