This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
[tree-ssa] unSSA questions and missing reference.
- From: Jan Vroonhof <jvlists at ntlworld dot com>
- To: gcc at gcc dot gnu dot org
- Date: 09 Mar 2003 12:45:34 +0000
- Subject: [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