[m-dev.] ground->clobbered argument modes

David Overton dmo at cat.cs.mu.OZ.AU
Thu Aug 5 15:06:44 AEST 1999

On Wed, 04 Aug, 1999 at 05:37:37PM EST, Fergus Henderson wrote:
> On 04-Aug-1999, Simon Taylor <stayl at cs.mu.OZ.AU> wrote:
> According to this analysis, the code for sc_get/3 is OK;
> the mode checker should allow that.  Instead, the uncaught mode error
> in this module is in the call to sc_set/3 in sc2/4; this code should
> be illegal because sc2/4 calls sc_set/3 with an argument which is still
> (in part) live, even though the final inst is `clobbered'.
> When checking if a variable is live, mode analysis needs to also check whether
> any of the variables that it (or any part of it) is aliased to are live.

I have had a change sitting around for a few months that does this
check.  It is part of a larger incomplete change to provide better
support for partially instantiated data structures which I haven't
worked on for quite a while.

I'm not going to commit the code as it is, because it is currently
extremely inefficient.  Basically it collects all the inst_keys in the
current inst of the variable and then does a search through the
whole instmap looking for a live variable that contains one of those
inst_keys in its current inst.

I think some sort of backwards mapping from inst_keys to variables
will be needed to make this more efficient.  Anyway, it's on my list
of things to do.

David Overton       Department of Computer Science & Software Engineering
MEngSc Student      The University of Melbourne, Australia
+61 3 9344 9159     http://www.cs.mu.oz.au/~dmo
mercury-developers mailing list
Post messages to:       mercury-developers at cs.mu.oz.au
Administrative Queries: owner-mercury-developers at cs.mu.oz.au
Subscriptions:          mercury-developers-request at cs.mu.oz.au

More information about the developers mailing list