annotate lab4/share.mli @ 0:bfdcc3820b32

Basis
author Mike Spivey <mike@cs.ox.ac.uk>
date Thu, 05 Oct 2017 08:04:15 +0100
parents
children
rev   line source
0
Mike Spivey <mike@cs.ox.ac.uk>
parents:
diff changeset
1 (* lab4/share.mli *)
Mike Spivey <mike@cs.ox.ac.uk>
parents:
diff changeset
2 (* Copyright (c) 2017 J. M. Spivey *)
Mike Spivey <mike@cs.ox.ac.uk>
parents:
diff changeset
3
Mike Spivey <mike@cs.ox.ac.uk>
parents:
diff changeset
4 (* The function |traverse| transforms a list of optrees by finding
Mike Spivey <mike@cs.ox.ac.uk>
parents:
diff changeset
5 common subexpressions; for each of them, it allocates a temp with
Mike Spivey <mike@cs.ox.ac.uk>
parents:
diff changeset
6 an initializing assignment, then replaces all occurrences of the
Mike Spivey <mike@cs.ox.ac.uk>
parents:
diff changeset
7 subexpression with a use of the temp. Procedure calls are also moved
Mike Spivey <mike@cs.ox.ac.uk>
parents:
diff changeset
8 to the top level by a similar mechanism. *)
Mike Spivey <mike@cs.ox.ac.uk>
parents:
diff changeset
9
Mike Spivey <mike@cs.ox.ac.uk>
parents:
diff changeset
10 (* |traverse| -- find common subexpressions in a procedure body *)
Mike Spivey <mike@cs.ox.ac.uk>
parents:
diff changeset
11 val traverse : Optree.optree list -> Optree.optree list