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 ;-)
Estimated hours taken: 0.1
scripts/rs6000_hack:
Remove llds.c from the list of files to fix, since it doesn't
need to be fixed, and the script barfs if it tries to split 0
pieces off a file. (The set of files that need to be fixed
seems to be sensitive to the compilation options used.)
Estimated hours taken: 0.25
scripts/mgnuc.in:
Fix a bug in, and improve the documentation of, my previous
change to use `-fPIC' rather than `-fpic' on solaris2 in grade none.
Estimated hours taken: 0.25
scripts/mgnuc.in:
On sparc-sun-solaris*, we need to use `-fPIC' rather than `-fpic'
for grade `none', to avoid overflowing a fixed limit on the number
of "small pic" references.
Estimated hours taken: 1
scripts/mtags:
Generate tags for functors (constructors).
Also, generally reorganize the code and document parts of it a
bit better. I also added code to warn about duplicate
definitions, but such warnings are probably just a pain,
so I turned them off.
Estimated hours taken: 0.2
mc.in:
Transmit the --num-real-r-regs, --num-real-temps and
--branch-delay-slot options from autoconfiguration to mercury_compile.
Estimated hours taken: 2
scripts/Mmake.rules:
Change the rules for building `.pic_o' to avoid some problems
with parallel makes. In particular, the stuff for removing
the intermediate `.c' files was causing some trouble.
Estimated hours taken: 1
scripts/rs6000_hack:
Add a script to work around fixed limits in the RS/6000 object
file format by chopping up large C files into smaller pieces.
Estimated hours taken: 0.5
Fix a security problem with the use of `chmod +w'.
{scripts,runtime}/Mmake:
Use `chmod u+w' rather than `chmod +w' on the installed files,
since `chmod +w' has the wrong effect with some versions of chmod.
When configure creates automatically-generated files, we do a
`chmod -w' on them to make sure that you don't accidentally edit
the automatically-generated file rather than the source `.in' file.
However, if the installed copies are write-only, then it causes
problems when installing a new copy on top of an old one.
Hence we turn write permission back on again on the installed copies.
The `chmod +w' command has the right effect on Solaris, OSF/1, and
SunOS, where it takes into account the umask. However, on IRIX and
ULTRIX, `chmod +w' does not take the umask into account, and so
makes the files world-writable, which is a security problem.
Hence, we now use `chmod u+w' instead.
Estimated hours taken: 0.25
scripts/mgnuc.in:
Add another work-around for a gcc-2.6.3 bug, this time to avoid
a gcc abort when compiling compiler/modules.c with -O2 on the
alpha. Note that this bug only seems to be triggered if
modules.m is compiled with mc -O3 (i.e. with value numbering
enabled), which is why it wasn't encountered before.
The problem does not occur with gcc-2.7.2, but we should leave
the work-around in so that people who only have gcc-2.6.3 can
install the system.
Estimated hours taken: 0.25
Fix a problem detected by the auto-test script on munta.
scripts/mgnuc.in:
The work-around for the gcc-2.6.3 bug on mips in which
it reports an internal error when compiling `int.c' with -O2,
where the mgnuc script checks for the name `int.c' and if so
uses -O1 rather than -O2, did not succeed the library was
compiled with --split-c-files, because the file on which gcc
died was now named `int.dir/int_002.c'. I've fixed the
mgnuc script to check for `int.dir/int_*.c' as well as `int.c'.
Estimated hours taken: 1 summer studentship
scripts/ml.in:
Handle the new set of grades (*.cnstr).
scripts/mgnuc.in:
Pass -DCONSTRAINTS if the grade is *.cnstr
Estimated hours taken: 0.1
scripts/Mmake.rules:
In the rule for compiling with --split-c-files, make sure that
we remove the old object files before we recompile. This is
necessary in case you removed some predicates from the source
file, in which case there will be fewer object files produced --
we need to make sure that we don't leave old ones lying around.