[Mono-devel-list] SSAPRE: this time it's for real ;-)

Massimiliano Mantione massi at ximian.com
Wed Nov 24 17:25:10 EST 2004

OK, this time (if there are no objections) I could really commit
this code.

It passes *all* regression tests, which means I enabled SSAPRE
by default in driver.c and then I rebuilt the whole tree (both
mono and mcs).
After that, I executed the following:

make -C mcs/tests test-everything
make -C mcs/errors test-everything
make -C mono/mono/mini rcheck
make -C mono/mono/tests testjit

All gave "normal" results (there were issues in mcs/errors, but
Martin said it's OK, and a couple of things failed in the jit
test, but were not SSAPRE related and failed anyway without it).

I have no nice benchmark results for now.
Anyway, keep in mind that in this first release it is already
a good result the fact that it does not make things *worse* :-)
There are a few issues I should still evaluate carefully (like
the fact that critical edges have bad interferences with branch
optimizations, too many variables are added on average, loop
invariant code motion is still suboptimal...

The compilation time of mscorlib.dll (mono --compile-all) goes
from about 1.310s with "-O=abcrem,-ssapre" to 1.420s with
"-O=abcrem,ssapre" (I included abcrem to have SSA in, otherwise
the comparison would not be fair).
It is worse (like it should be), but not that bad considering all
the work that SSAPRE must do.

I would especially like to see comments on these things:

[1] The small modification I did in ssa.c, it looks safe, but I
    still haven't done a "svn blame" to see why that comment was
    there... anyway, removing the comment works ;-)
[2] I disable SSA when a method has arguments by reference, because
    this can lead to aliasing problems if the reference is passed
    forward to some other method (I found it the hard way, SSAPRE
    didn't work with aliasing).
[3] There is a "WARNING" log in ssapre.c when ssa.c did not put
    the definition bb in the def_bb field, my code puts it in, but
    why doesn't the SSA construction code do it in the first place?
    (I'm going to investigate this soon, but if anybody just happens
    to know...)

That's all...


-------------- next part --------------
A non-text attachment was scrubbed...
Name: ssapre.patch
Type: text/x-patch
Size: 85770 bytes
Desc: not available
Url : http://lists.ximian.com/pipermail/mono-devel-list/attachments/20041124/915d88f8/attachment.bin 

More information about the Mono-devel-list mailing list