[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
--
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