Estimated hours taken: 0.5
compiler/modules.m:
scripts/Mmake.rules:
Remove references to .garb files.
We are not going to use a separate link phase for accurate gc
anymore.
Estimated hours taken: 8
scripts/Mmake.rules:
Work around a new (mis-)feature present in GNU Make 3.74
but not in 3.71: recent versions will not update the timestamp
of a target if the commands for that target are just whitespace.
Instead, we need to use an explicit sh `:' command.
Estimated hours taken: 0.5
Added documentation of the new MERCURY_SP_OVERRIDING_LIB_OBJS (etc.)
environment variables, and improved documentation of other Prolog related
Mercury environment variables.
scripts/msl.in:
document MERCURY_SP_OVERRIDING_LIB_OBJS and add documentation for some
other variables
scripts/mnl.in:
document MERCURY_NU_OVERRIDING_LIB_OBJS, and add documentation for some
other variables
Estimated hours taken: 4
Improved the error messages for map__lookup failure by writing out the types
of the values and keys.
Also, since the Prologs cannot handle the type_of functions, a `normal'
version of map__lookup has been added to map.nu.nl
To accomodate this, this change implements a mechanism to override
definitions of predicates for particular Prologs. This mechanism makes
explicit which .no or .ql files contain preds overriding others, and so
makes things a bit more robust.
library/map.m:
Implement the better error messages.
library/map.nu.nl:
The Prolog version of map__lookup.
library/Mmakefile:
Set new environment variables, MERCURY_NU_OVERRIDING_LIB_OBJS or
MERCURY_SP_OVERRIDING_LIB_OBJS to be the files which are to be
linked, but contain definitions which override others.
scripts/mnl.in:
Link everything in MERCURY_NU_OVERRIDING_LIB_OBJS last.
scripts/msl.in:
Link everything in MERCURY_SP_OVERRIDING_LIB_OBJS last.
Estimated hours taken: 0.25
Work-around a bug in gcc 2.6.3 on mips that caused a gcc internal error
when compiling compiler/bytecode.c.
scripts/mgnuc.in:
Ensure that bytecode.c is compiled with `-O1' rather than `-O2'.
Estimated hours taken: 0.25
Fix a problem on Windows reported by Dominique de Waleffe.
scripts/mercury_update_interface.in:
Delete the hard-coded setting of `PATH=/bin:/usr/bin'.
The original intent was to avoid problems with people who have
done things like putting shell scripts that override the
standard commands such as `mv' and `cp' in their path.
However, since we haven't done this consistently for all of our
shell scripts, and since this causes problems for Windows
installations (for which the binaries might not be in /bin
or /usr/bin), it seems simplest to just remove it.
If we run into any problems with this, it should be put back in
as `PATH=/bin:/usr/bin:$PATH' rather than `PATH=/bin:/usr/bin',
and it should be done consistently for all shell scripts, not just
this one.
Estimated hours taken: 2
Use EXTRA_* environment variables for setting flags.
doc/user_guide.texi:
Document that EXTRA_* variables can be used for setting flags
when mmake is being used. Document the commonly used mmake
variables.
scripts/Mmake.vars.in:
Set *FLAGS variables according to EXTRA_*FLAGS.
Estimated hours taken: 0.25
scripts/mmake.in:
Undo my previous change to use `exec', since that causes
problems because the temporary files never get removed.
Instead, I've just added a comment saying why `exec' can't
be used.
Estimated hours taken: 0.1
scripts/ml.in:
Allow `*-cygwin32' as a another name for Windows running gnu-win32,
since that is the name that `config.guess' outputs.
Estimated hours taken: 0.25
scripts/mmake.in:
Change the code so that it uses `exec' to run make,
rather than just invoking it as a sub-process. This
should be a little more efficient.
in gc 4.11 meant that `ml -static' didn't work on Linux, because
you got unresolved references to _DYNAMIC in dyn_load.o.
scripts/ml.in:
If we're passed `-static' or `--static', then pass
`-static -Wl,-defsym,_DYNAMIC=0' to gcc, so that gcc
will pass `-defsym _DYNAMIC=0' to the linker.
Estimated hours taken: 0.25
scripts/ml.in:
Fix a bug in the code to parse the new -static, --static, -shared and
--shared options: add in some missing `shift' statements.
scripts/c2init.in:
scripts/mmake.in:
scripts/msc.in:
Small changes to the help messages to make them come out
better when converted to man pages.
scripts/mgnuc.in:
Add a `--help' option.
Estimated hours taken: 1
Some work towards making it easier to use shared libraries on Linux.
scripts/ml.in:
Add a `--mercury-libs {shared, static, none}' option
(`--mercury-libs none' replaces the old `--no-libs' option).
Add `--shared' and `--static' options.
Add a `--help' option.
Estimated hours taken: 0.25
scripts/Mmake.rules:
Add a rule for creating `.pic_s' files (which are the
assembler files corresponding to the `.pic_o' objects).
Estimated hours taken: 0.25
scripts/msc.in:
Change the default compile mode from `fastcode' to `compactcode',
because the SICStus 2.1#9 native code generator for Sparc
has some bugs in it.
Estimated hours taken: 0.5
One of several changes to add support for ELF shared libraries on Linux.
scripts/ml.in:
For i?86-*-linux*, pass the appropriate flags to the linker to
link in shared libraries, if there are any.
#endif
Estimated hours taken: 0.5
More stuff to support non-Mercury main() programs.
util/c2init.c:
Implement a new `-l' / `--libary' option.
If this option is enabled, we pass `-l' to mkinit,
which has the end result that we don't emit a main(),
but instead we emit a mercury_main(argc, argv, stack_bottom)
function that can be called from C.
Estimated hours taken: 2
If `double' is the same size as `void *', then don't box floats.
scripts/mc.in:
Pass the configured value of @HAVE_BOXED_FLOATS@ to mercury_compile.
Estimated hours taken: 0.25
scripts/mc.in:
scripts/mgnuc.in:
scripts/ml.in:
Put @CC@ in quotes, so that it works in the case when someone
does `CC="gcc -some -options" configure'. Similarly for @MKFIFO@.
Estimated hours taken: 8 (to find the problem) + 0.25 (to fix it)
scripts/ml.in:
For gnu-win32, don't strip the executable by default, since
`gcc -s' seems to be broken on gnu-win32 for Windows NT.
Estimated hours taken: 0.25
Rename `scripts/Mmake' as `scripts/Mmakefile', to avoid
a conflict with `scripts/mmake' on case-insensitive file
systems, i.e. Windows. (The `mmake' script checks
for both Mmakefile and Mmake, so it will still find it.)
Estimated hours taken: 2
Improvements to intermodule optimization and bug fixes.
scripts/Mmake.rules
Stop the output of --make-optimization-interface going to the
.err file.
Estimated hours taken: 0.1
mc.in:
Replace --num-real-temps "$NUM_REAL_TEMPS" with --num-real-r-temps
"$NUM_REAL_R_TEMPS". Since NUM_REAL_TEMPS is not defined, the old
code was buggy (why can't sh require declarations of variables? :-)
We now also use the more correct form of the option name.
Before this fix, value numbering incorrectly thought that no
temporary variables were kept in registers, and as a result it
frequently rejected improved code fragments improperly because,
due to this bug, its cost model said they they were too expensive.
Estimated hours taken: 0.25
scripts/mc.in:
Uncomment the definition BITS_PER_WORD=@BITS_PER_WORD@;
previously this was commented out and replaced with
BITS_PER_WORD=32 because of bugs elsewhere, but I think
we've fixed those bugs long ago.
-
Estimated hours taken: 0.5
scripts/Mmake.rules
scripts/Mmake.vars.in
Add suffixes, rules and options for .opt and .optdate.
scripts/mercury_update_interface.in
Work-around for a problem with parallel gmake. mc --make-interface
was being run twice in a row on the same module. The first call
mercury_update_interface moves module.int.tmp to module.int,
then the second can't find module.int.tmp. The work-around is to
ignore the exit status of the mv.
Estimated hours taken: 0.5
scripts/Mmake.rules:
Ensure that the rule for `mmake realclean' removes the
profiling files.
Also use `--grade' rather than `-s' (the latter is a bit cryptic).
Estimated hours taken: 0.25
scripts/mgnuc.in:
Pass -Wno-uninitialized on i?86 targets, to avoid
lots of spurious warnings about `stack_pointer' possibly
used before being initialized.
Estimated hours taken: 0.25
Add handling of accurate GC grades to the scripts.
scripts/Mmake.rules:
Add '-s $(GRADE)' to the rule for .m.garb
Remove obsolete .mod.mod_h rule (we don't use that mechanism anymore).
Remove .mod_h from .SUFFIXES
scripts/mgnuc.in:
Add .agc grade for accurate garbage collection.
Estimated hours taken: 0.2
Module qualification of types, insts and modes.
Added a new interface file - <module>.int3. This contains the
short interface qualified as much as possible given the information
in the current module.
When producing the .int and .int2 files for a module, the compiler uses
the information in the .int3 files of modules imported in the interface
to fully module qualify all items. The .int2 file is just a fully
qualified version of the .int3 file. The .int3 file cannot be overwritten
by the fully qualified version in the .int2 file because then mmake would
not be able to tell when the interface files that depend on that .int3
file really need updating.
scripts/Mmake.rules
scripts/Mmake.vars
Removed the rule for .int, since this is now in the .d files.
Rules and suffix entry for the .int3 and .date3 files.
Estimated hours taken: 0.25
scripts/mc.in:
Back out Zoltan's change to pass --num-real-r-regs instead
of --num-real-regs, since it prevents bootstrapping.
We need to wait until the rest of his changes have been
installed everywhere before recommitting this change.
Estimated hours taken: 0.25
scripts/mmake.in:
Check for `Mmakefile' as an alternative to `Mmake'.
(This change is so I can rename scripts/Mmake as Mmakefile
to avoid a conflict with scripts/mmake on systems with
case-insensitive file systems, e.g. Windows 95.)
Estimated hours taken: 0.5
scripts/Mmake:
Add `Mmake.vars' to the list of targets; without this,
it was not updating Mmake.vars when Mmake.vars.in was changed.
Estimated hours taken: 0.25
scripts/mgnuc.in:
Avoid code duplication by using the value of CFLAGS_FOR_REGS
and CFLAGS_FOR_GOTOS from configure.in rather than duplicating
the logic to compute them here. (There's still a small amount
of duplication, but that is more difficult to avoid.)
Estimated hours taken: 0.5
scripts/{c2init,mnc,mnl,msc,msl}.in:
Fix a portability problem: ULTRIX's /bin/sh does not understand
`shift 2', so I've replaced all occurrences of this with
`shift; shift'. (Thanks to Jeff Schultz for the bug report.)
Estimated hours taken: 0.1
Plus lots of debugging time
scripts/mc.in
Always pass --bits-per-word 32, since for some reason
--bits-per-word 64 causes the compiler to generate incorrect
code for lookup switches.
Estimated hours taken: 0.25
(plus 0.75 debugging)
scripts/mc.in:
Pass the configured value of --bytes-per-word.
Also fix a missing line for --bits-per-word.
Estimated hours taken: 0.1
scripts/mc.in:
Pass the number of bits in a word as a configured parameter
to mercury_compile instead of using the default (32). Ports
to 16 bit achitectures should now work ;-)