[m-dev.] summer project

Peter Wang wangp at students.cs.mu.OZ.AU
Fri Jan 13 15:03:36 AEDT 2006


My project is to complete the intermodule analysis framework following
the design of the HAL people.

The project has two main parts.  The first part is essentially book
keeping.  The analysis registry holds analysis results which are
generated while compiling one module, that can be looked up later when
compiling another module.  An analysis result is a mapping from a
function ID and a call pattern to an answer pattern.  As the module is
compiled or more precise information comes in from other modules,
answers can increase in preciseness.  On the other hand, if something
changes then old answers may no longer be valid.  In either case,
callers of the function whose answer changed should either be recompiled
for the sake of correctness or optimality.  To facilitate this, the
analysis framework keeps track of which analysis results are being used
by which other modules, forming the intermodule dependency graph.

Each analysis result and module has a status to indicate whether is it
up-to-date, invalid, or suboptimal.  Modules can also request other
modules for more precise analyses of a function with more specific call
patterns.  The second part of the project is to make the build system
recompile modules as necessary, given that information.  This would not
be nice to try with mmake, so it will be done for mmc --make.  This also
involves fixing any deficiencies of mmc --make so that it is taken more
seriously as an alternative to mmake.

The analysis framework was already started by Simon Taylor, who also
wrote the --make system.  So far I have added status tracking to the
framework and added code to record the intermodule dependency graphs,
and that should be reviewable soonish.  The next step is to get the make
system recompiling modules.  There should be time after to make at least
one more analysis pass use the framework (the unused argument
elimination and trail usage analyses currently can use it).

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