llds.nl:
changed call/2 to call/3 to include gc information about
what registers and stack locations are live, and what their
`shape numbers' are. Currently all the shape numbers are -1
because the shape table stuff hasn't been implemented.
* The changes made are only cosmetic as far as everything else
* is concerned.
*.nl, etc:
changes related to the above.
term.nl:
In term__create_var, use bit reversals rather than random numbers
to ensure that the binary trees remain balanced.
call_gen.nl:
For polymorphic unifications, generate a call to fatal_error().
code_gen.nl, hlds.nl, make_hlds.nl, modes.nl, unify_proc.nl:
Move the unify_request data structure from code_info to the HLDS,
and move the unify_request handling from code_gen.nl to modes.nl.
This is because we now generate HLDS code rather than LLDS code
for complicated unifications.
code_util.nl, hlds_out.nl:
Do some special name mangling for =/2.
float.nl, typecheck.nl, undef_types.nl, term.nl, hlds.nl:
Until we implement `float' properly, define it as an abstract type
in float.nl.
hlds.nl, make_hlds.nl:
Rename `local_pred, imported_pred, exported_pred' to just
`local, imported, exported' since they also apply to types, etc.,
not just to preds.
mercury_compile.pp, mercury_to_goedel.nl, prog_util.nl:
Replace to goedel__ prefixes in prog_util.nl with prog_util__.
std_util.nl:
Change the code for semidet_succeed to avoid determinism warning.
code_gen, opt_util:
prepared then for middle_rec.
peephole, opt_debug:
old changes.
printlist.int:
shouldn't have been here in the first place.
source_stats.awk:
turned comments into awk syntax.
value_number.nl:
a lot less functionality is missing now :-)
atsort.nl:
approximate topological sort for value numbering
opt_*.nl:
changes to supprt value numbering
llds.nl, *_gen.nl:
changed livevals/1 into livevals/2 to support value numbering
list.nl:
added a predicate to delete a list (set) of items from a list
peephole.nl:
implement shortcircuiting inside computed goto label lists. Not tested
since the only place we use computed gotos has no opportunities for
short circuiting.
options.nl:
added option to control the maximum number of repetitions of
the peephole optimizations; default value is 2.
dir.nl:
fixed spelling error
Makefile*:
Add some more stuff for compiling to .o
Makefile*, mercury_compile*, code_gen*:
Add some stuff for handling `.pp' files.
`.pp' files are Mercury source code containing
NU-Prolog hacks inside
#if NU_PROLOG
...
#endif
These hacks are preprocessed out (using sed, not cpp)
except when compiling with `mnc'.
term_io.nl, term_io.nu.nl, interpreter.nl, prog_out.nl:
Make sure all the predicates in term_io.nl are
prefixed with `term_io__', not `io__'.
term_io.nl, require.nl:
Add some `external' declarations.
call_gen.nl, unify_gen.nl:
A temporary hack - generate incorrect code for complicated/polymorphic
unifications, rather than aborting.
random.nl:
Make the code more efficient.
hlds.nl, term.nl:
Allocate pred_ids and variable numbers randomly rather than
sequentially, so that the binary trees remain reasonably balanced.
code_info.nl, unify_gen.nl, hlds_out.nl:
Generate informative comments for tag tests: say the name of
the variable being tested, and which constructor we are testing for.
llds.nl:
Cast field() expressions to (int) when used as rvals, so
that comparisons work as expected.
make_hlds.nl:
Improve error reporting.