inlining.nl:
Now that Tom has simplified the inlining algorithm,
we don't need to requantify goals after inlining,
since inlining preserves the right quantification.
*.nl:
Replace all occurrences of `not(Vars, Goal)' with just
plain `not(Goal)'.
type_util.nl, switch_gen.nl:
Higher-order pred types are not user-defined types.
Add a `predtype' type category for them.
call_gen.nl:
Change call_closure/2 to call_closure/3 (with liveinfo).
Plus a little bit of random hacking.
code_info.nl:
Improve an error message.
followcode.nl:
Add a comment.
hlds_out.nl:
Output ":=", "==", or "=" for the different types of unifications.
======> READ THIS: <======
(Known bug: the order of the operands for ":=" is wrong.)
make_hlds.nl, unify_proc.nl:
Make complicated unifications work!
options.nl, mercury_compile.pp:
added an option --inlining.
hlds.nl, inlining.nl:
bugfixes - propegate the type information for inlined preds
- get the assign/2 arguments in the right order :-)
inlining.nl:
make the heuristic for inlining stricter.
mercury_compile.*:
add an extra garbage collection.
code_aux.*:
add "goal_is_flat" test predicate.
inlining.*:
A pass that performs inlining. The current heuristic of
what to in line is that only predicates containing builtins
get inlined. The inlining mechanism will trivially extend
to inlining more complex predicates.
Currently, inlining cannot cross module boundaries.
misc:
Additions for inlining.