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