[m-rev.] diff: fix a bug in loop invariant hoisting

Ralph Becket rafe at cs.mu.OZ.AU
Mon Sep 20 14:23:18 AEST 2004

Zoltan Somogyi, Monday, 20 September 2004:
> That looks fine, but it begs the question of what loop invariant
> optimization was doing with such goals in the first place. IIRC, all
> foreign_procs with extra arguments are marked as impure or semipure,
> and so shouldn't be optimized away by loop invariant optimization.

The LIO doesn't attempt to hoist semipure or impure goals, but it does
first makes a pass over the proc body to identify uniquely used
variables, which is where the problem arose.  The problem arose because
the first pass just looks at the arg_modes, which, it seems, don't
include the modes for the extra args.

-- Ralph
mercury-reviews mailing list
post:  mercury-reviews at cs.mu.oz.au
administrative address: owner-mercury-reviews at cs.mu.oz.au
unsubscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: unsubscribe
subscribe:   Address: mercury-reviews-request at cs.mu.oz.au Message: subscribe

More information about the reviews mailing list