On Sat, 2007-09-08 at 12:40 +1000, skaller wrote:
[]

One thing I didn't mention: if the LHS is nasty, eg an array element:

        x.[i] = 1,2,3;

the parallelised form:

        x.[i].(0) = 1;
        ...

will duplication the subscript call. This is a common sub-l-expression
and should be eliminated by a pointer .. but Felix doesn't know how
to do that. If you do:

        px := &x.p[i];
        *px.(0) = 1;
        ...

the dereference implies aliasing and without even more
control flow analysis the optimisation is impossible because
the dependency on 'px' doesn't tell which store is being changed
(since it is a pointer and could point anywhere).
Some checks could be made, eg, you can't point at a 'val'.

This applies on the RHS too: whenever we 'unravel' a wholistic
expression by applying projections to it, there is a risk of
recalculating the expression multiple times (even though
it is invariant).


-- 
John Skaller <skaller at users dot sf dot net>
Felix, successor to C++: http://felix.sf.net

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to