[mercury-users] Optimisation of functions and field updates

Julien Fischer juliensf at csse.unimelb.edu.au
Tue Aug 8 16:03:12 AEST 2006


On Tue, 8 Aug 2006, Julien Fischer wrote:

>
> On Mon, 7 Aug 2006, Michael Day wrote:
>
>> Say I have the following code:
>> 
>> 	X = f1(f2(f3(f4(X0))))
>> 
>> where
>> 
>> 	f1(X) = X ^ field1 := blah.
>> 	f2(X) = X ^ field2 := blah.
>> 	...
>> 
>> If the functions were inlined, then the multiple field updates could be
>> combined into a single update, but it appears that this is not happening,
>> as I get a speed boost when I replaced the function calls with explicit
>> field updates, even at -O5.
>
> It looks like the simplification passes after inlining aren't cleaning
> up as well as they should.  I've just constructed a small example and
> it seems to leave redundant assignments hanging around.  This seems
> to be more of a problem in the MLDS backend.

In fact looking at the generated C code more closely it is only
a problem for the MLDS backnd, the LLDS->LLDS optimizations
clean up the redundant assignments (at least for my example).

Julien.
--------------------------------------------------------------------------
mercury-users mailing list
Post messages to:       mercury-users at csse.unimelb.edu.au
Administrative Queries: owner-mercury-users at csse.unimelb.edu.au
Subscriptions:          mercury-users-request at csse.unimelb.edu.au
--------------------------------------------------------------------------



More information about the users mailing list