Hi! On Thu 24 Jan 2013 10:28, Mark H Weaver <m...@netris.org> writes:
> The problem is that CPS fixes the order in which everything is > evaluated, such as the order in which procedure arguments are > evaluated, the order in which 'let' or 'letrec' initializers are > evaluated, etc. The fact that these orders are unspecified in the > direct-style gives the compiler freedom to choose an order that > generates the best code, and apparently this freedom can often result > in significant gains. Such ordering decisions must be made before the > conversion to CPS. Agreed with the sentiment; however, two points: * we can have a CPS with let / letrec / * operators that bind a number of values in unspecified order, and have a pass later that fixes their order. * code motion passes like CSE depend on effects analysis, and can often commute some operations Anyway, violent agreement! Cheers, Andy -- http://wingolog.org/