Commit Graph

15 Commits

Author SHA1 Message Date
Zoltan Somogyi
be553f9b16 Turn off lcmc for modules that it doesn't help. 2016-04-26 12:51:56 +10:00
Julien Fischer
a26f5169bd Delete dice.m from the browser directory.
browser/dice.m:
     Delete this file; it hasn't been used since 2005 and was only still
     around in case we wished to use the file again when we were using CVS.

browser/Mercury.options:
     Delete MCFLAGS specific to the above file.
2015-08-22 22:39:57 +10:00
Peter Wang
91b78d6738 Make it possible to install and use the csharp.ssdebug grade.
Branches: main

Make it possible to install and use the csharp.ssdebug grade.

Mmake.workspace:
        Never try to link with `mer_rt' in C# grades.

browser/Mmakefile:
mdbcomp/Mmakefile:
ssdb/Mmakefile:
        Use `mmc --make' to install these libraries in `csharp' grades.

        Don't add C libraries to MLLIBS in non-C or asm grades.

browser/Mercury.options:
ssdb/Mercury.options:
        "EXTRA_LIBRARIES-libname" doesn't actually work with `mmc --make',
        but "LIBRARIES-name" does.

library/exception.m:
ssdb/ssdb.m:
        Handle EXCP events in C# grades.

        Trap SIGINT when running ssdb in C# grades.

        Add `exit_process' implementation.

browser/declarative_execution.m:
browser/listing.m:
        Add stubs for C#.

README.CSharp:
        Document the C# backend.

README.DotNet:
        Add a pointer to README.CSharp.

README.Erlang:
README.Java:
        Remove a non-sensical paragraph.

.INSTALL.in:
configure.in:
        Add `--enable-csharp-grade' option.

        Make `configure --enable-ssdebug-grades' add `csharp.ssdebug'
        to the list of library grades.
2010-10-26 04:59:10 +00:00
Julien Fischer
b4c3bb1387 Clean up in unused module imports in the Mercury system detected
Estimated hours taken: 3
Branches: main

Clean up in unused module imports in the Mercury system detected
by --warn-unused-imports.

analysis/*.m:
browser/*.m:
deep_profiler/*.m:
compiler/*.m:
library/*.m:
mdbcomp/*.m:
profiler/*.m:
slice/*.m:
	Remove unused module imports.

	Fix some minor departures from our coding standards.

analysis/Mercury.options:
browser/Mercury.options:
deep_profiler/Mercury.options:
compiler/Mercury.options:
library/Mercury.options:
mdbcomp/Mercury.options:
profiler/Mercury.options:
slice/Mercury.options:
	Set --no-warn-unused-imports for those modules that are used as
	packages or otherwise break --warn-unused-imports, e.g. because they
	contain predicates with both foreign and Mercury clauses and some of
	the imports only depend on the latter.
2006-12-01 15:04:40 +00:00
Peter Wang
0290b5a4bf This fixes some problems with building everything with `mmake --use-mmc-make'
Estimated hours taken: 3
Branches: main

This fixes some problems with building everything with `mmake --use-mmc-make'
on x86, or possibly any platform where shared libraries are supported.

Mmake.workspace:
	Add "--mercury-linkage static" or "--mercury-linkage shared" to
	`MCFLAGS' depending on whether the `LINK_STATIC' makefile variable is
	yes or no.

analysis/ANALYSIS_FLAGS.in:
	Add -L<dir> options so that the analysis library can find the boehm_gc,
	runtime and standard library files when built in shared linking mode.

browser/Mercury.options:
	Work around a problem with per-file variables and `mmake
	--use-mmc-make'.

compiler/COMP_FLAGS.in:
profiler/PROF_FLAGS.in:
slice/SLICE_FLAGS.in:
	Remove "--linkage shared" from these files.  The Mmakefiles in these
	directories have "LINK_STATIC=yes" set.  This was causing a link error
	where the object files where being built with PIC but expected to
	link against lib*.a files.
2006-01-12 07:07:31 +00:00
Julien Fischer
b99f3aa2d2 Put some bug workarounds back in place until all of our
Estimated hours taken: 0
Branches: main

browser/Mercury.options:
	Put some bug workarounds back in place until all of our
	machines have boostrapped the fix.
2005-10-17 08:49:12 +00:00
Zoltan Somogyi
b9ca44672b Fix the bugs were exposed by my pre-dummy-type-diff cleanup of polymorphism.m.
Estimated hours taken: 24
Branches: main

Fix the bugs were exposed by my pre-dummy-type-diff cleanup of polymorphism.m.
This diff deleted a "semidet_fail" in the predicate that tested whether a
foreign_proc used a variable, making the test a real test, not a dummy.

The main bugs were in unused_args.m, polymorphism.m and ml_unify_gen.m.

compiler/unused_args.m:
	Fix the mismatch between the analysis and fixup passes' treatment of
	foreign_procs. The analysis pass says that variables representing
	unnamed foreign_proc arguments are unused, and therefore the code
	generating them can be optimized away, but the fixup pass used to leave
	those arguments unchanged. This is usually fine, but there was a
	problem if a variable had two or more such conjoined consumers but no
	other consumers. It then had its generator optimized away, but the
	variable was left in the nonlocal set of each consumer, which meant
	that the code generator aborted when trying to save the value of the
	variable after the first consumer.

	The fix is to rename unnamed foreign proc args, ensuring that they are
	local to the foreign_proc they appear in. The code generators can
	already handle such arguments.

compiler/typecheck.m:
	Detect foreign_procs that are supposed to bind type_info variables,
	but don't, and generate error messages for them. This is now necessary,
	since if we accept such predicates, unused_args.m will now rename apart
	the unused type_info argument, and the code generator will abort
	due to the type_info missing its generator.

compiler/typecheck_errors.m:
	Add a predicate for reporting the error.

compiler/goal_util.m:
	Add a utility predicate and export some previously internal predicates
	for use by unused_args.m.

	Delete redundant module prefixes on predicate names to avoid having to
	split long lines.

compiler/polymorphism.m:
	Ensure that all arguments of import foreign_procs are considered used,
	since our contract with foreign language code prevents us from
	optimizing them away.

	Redefine a predicate using the new utility predicate in goal_util.m.

compiler/pragma_c_gen.m:
	Ensure that all arguments of import foreign_procs are considered used,
	since our contract with foreign language code prevents us from
	optimizing them away. This is a belt-and-suspenders fix: the change to
	polymorphism.m should be sufficient to ensure this objective by itself.

compiler/ml_unify_gen.m:
	The mark_static_terms pass was assuming that if X is a static term,
	then after the assignment unification Y = X Y is also a static term.
	However, when processing such assignments, the code generator here
	neglected to copy over the part of the X's state that says what static
	term it is to become part of Y's state. This diff fixes that neglect.

compiler/ml_code_util.m:
	We used to identify MLDS variables holding static terms by a sequence
	number, and then create a name from the number by tacking on the name
	of the HLDS variable referring to it at each reference. This worked
	because each static term was referred to by only one HLDS variable;
	but after the diff to ml_unify_gen, this is no longer the case.
	We therefore now construct the MLDS variable's name when the static
	term is created, and use that name as the translation of all the HLDS
	variables referring to that static term.

compiler/add_pragma.m:
	Minor cleanup.

library/rtti_implementation.m:
library/store.m:
	In some predicates that don't define type_infos for existentially typed
	arguments, mention the type_info that *should* be defined there in
	comments to avoid the error now generated by typecheck.m.

browser/Mercury.options:
deep_profiler/Mercury.options:
	Undo the workaround for the fixed bug.

tests/existential_type_classes.m:
	In predicates that don't define type_infos for existentially typed
	arguments, mention the type_info that *should* be defined there in
	comments to avoid the error now generated by typecheck.m.

tests/existential_type_classes.exp:
	Conform to the changed line numbers in existential_type_classes.m.

tests/invalid/exist_foreign_error.{m,exp}:
	New test case for the error now detected by typecheck.m.

tests/invalid/Mmakefile:
	Enable the new test case.
2005-10-14 01:42:56 +00:00
Julien Fischer
62564b08cd Workaround some bugs that cause assertion failures
Estimated hours taken: 0
Branches: main

browser/Mercury.options:
	Workaround some bugs that cause assertion failures
	in the browser directory when compiling with -O5
	--intermodule-optimization --opt-space.
2005-10-06 08:50:15 +00:00
Julien Fischer
51269ed42e Shut the compiler up about mdb.dice no long exporting
browser/Mercury.options:
	Shut the compiler up about mdb.dice no long exporting
	anything.
2005-04-29 02:40:18 +00:00
Zoltan Somogyi
6b0fb566ce Move the mdbcomp library to its own directory.
Estimated hours taken: 12
Branches: main

Move the mdbcomp library to its own directory. To make this change less painful
to test, improve the way we handle installs.

browser/mdbcomp.m:
browser/mer_mdbcomp.m:
browser/prim_data.m:
browser/program_representation.m:
browser/trace_counts.m:
	Move these files to the mdbcomp directory.

browser/Mmakefile:
browser/Mercury.options:
mdbcomp/Mmakefile:
mdbcomp/Mercury.options:
	Split the contents of the old Mmakefile and Mercury.options file
	in the browser directory between these files as appropriate.
	Simplify away the stuff not needed now that there is only one library
	per directory. Make the browser directory see the relevant files
	from the mdbcomp directory.

Mmake.common.in:
	Separate out the prefixes allowed in the browser and the mdbcomp
	directories.

Mmake.workspace:
	Set up a make variable to refer to the mdbcomp directory.

	Adjust references to the mdbcomp library to point to its new location.

Mmakefile:
	Make invocations visit the mdbcomp library as necessary.

	Improve the way we install grades. Making temporary backups of the
	directories modified by the install process is unsatisfactory for two
	reasons. First, if the install fails, the cleanup script, which is
	necessary for user friendliness, destroys any evidence of the cause.
	Second, the restore of the backup wasn't perfect, e.g. it left the
	.d files modified to depend on .mih files, which don't exist in
	LLDS grades, and also left altered timestamps.

	This diff changes the install process to make a single tmp_dir
	subdirectory of the workspace, with all the work of install_grade
	being done inside tmp_dir. The original directories aren't touched
	at all.

*/Mmakefile:
	Adjust references to the browser directory to refer to the mdbcomp
	directory instead or as well.

scripts/Mmake.rules:
*/Mmakefile:
	Make it easier to debug Mmakefiles. Previously, creating a
	Mmake.makefile with mmake -s and invoking "make -d" ignored the
	most fundamental rules of mmake, because Mmake.rules was treating
	an unset MMAKE_USE_MMC_MAKE as if it were set to "yes", simply because
	it was different from "no". This diff changes it to treat an unset
	MMAKE_USE_MMC_MAKE as if it were set to "no", which is a more
	sensible default.

scripts/prepare_tmp_dir_fixed_part.in:
scripts/scripts/prepare_tmp_dir_grade_part:
	Two new scripts that each do half the work of preparing tmp_dir for
	the real work of the install_grade make target. The fixed_part script
	prepares the parts of tmp_dir that are grade-independent, while the
	grade_part scripts prepares the parts that are grade-dependent.

configure.in:
	Test C files in the mdbcomp directory to see whether they need to
	be recompiled after reconfiguration.

	Create prepare_tmp_dir_fixed_part from prepare_tmp_dir_fixed_part.in.

compiler/*.m:
runtime/mercury_wrapper.c:
	Update the references to the moved files.

compiler/notes/overall_design.html:
	Mention the new directory.
2005-01-28 07:12:05 +00:00
Ian MacLarty
e573b2d16e Disable higher order specialization for the mdb.declarative_edt module
Estimated hours taken: 12
Branches: main

Disable higher order specialization for the mdb.declarative_edt module
since mdb.declarative_edt.revise_root/3 exposes a bug in this optimization.

Allow the declarative debugger to continue to be debugged after a new portion
of the annotated trace has been generated.

browser/Mercury.options
	Disable higher order specialization for the mdb.declarative_edt module.

trace/mercury_trace_declarative.c
trace/mercury_trace_declarative.h
	Add a global variable MR_trace_decl_in_dd_dd_mode to indicate when
	the declarative debugger was invoked with the dd_dd command.  A
	seperated variable must be used to trace_mode, since trace_mode
	is changed to MR_TRACE_INTERACTIVE when the declarative debugger
	is started, so it's not possible to tell that it was invoked with the
	dd_dd command when diagnosis is restarted after a new portion of the
	annotated trace has been generated.

trace/mercury_trace_internal.c
	Set MR_trace_decl_in_dd_dd_mode appropriately depending on whether
	`dd' or `dd_dd' was used to invoke the declarative debugger.

	When the dd_dd command is used, set the trace_mode to
	MR_TRACE_DECL_DEBUG instead of MR_TRACE_DECL_DEBUG_DEBUG since the
	value of MR_trace_decl_in_dd_dd_mode is now used instead to determine
	if the dd_dd command was given.

trace/mercury_trace_internal.h
	Remove the MR_TRACE_DECL_DEBUG_DEBUG trace mode option since it is
	no longer used.
2005-01-24 07:53:39 +00:00
Ian MacLarty
ea43cd038d Changes to get shared libraries to work on Mac OS X (Darwin).
Estimated hours taken: 20
Branches: main

Changes to get shared libraries to work on Mac OS X (Darwin).

This is phase 2 of 2.  Phase 1 added the compiler options described below.
Phase 2 uses these compiler options in the configuration scripts.

Darwin shared libraries have the extension `dylib' instead of `so'.  Also
objects that link to a shared library on Darwin don't need to be told the
runtime path in which they should look for the libraries, instead the
shared libraries themselves remember where they will be eventually installed
(called the install-name) and any object which links in the shared library will
get the install-name from the shared library at link time.  When a shared
library is built it has to be told where it will be installed which is what
the libtool -install_name option is used for on Darwin.

This diff only enables shared libraries on Darwin, not "bundles" which are
shared objects that can be loaded dynamically at runtime using something like
dlopen.  Therefore the interactive query tool in the debugger still doesn't
work on Mac OS X.

Added three new compiler options :

--shlib-linker-use-install-name :
	A boolean flag to tell the compiler to use the -install_name option
	when building shared libraries.  When this flag is set the following
	options have no effect: --linker-rpath-flag, --linker-rpath-separator,
	--shlib-linker-rpath-flag, --shlib-linker-rpath-separator.

--shlib-linker-install-name-flag :
	The flag name to use ("-install_name" for Darwin).

--shlib-linker-install-name-path :
	The path where the shared library will eventually end up, excluding the
	file name.  The file name is appended to the end before the option
	is passed on to the linker.

Mmake.common.in
	Added variables used for install-name on/off switch and flag name.

NEWS
	Mentioned shared libs working now on Mac OS X.

README.MacOS
	Removed bit about shared libs not working in Mac OS X.

configure.in
	Make shared libs the default when on Darwin and the compiler is gcc.

boehm_gc/Makefile
boehm_gc/Makefile.direct
	Added rule to make libgc.dylib and set the install-name correctly.

boehm_gc/Mmakefile
	Set variable used in boehm_gc/Makefile to get the final install path
	of the gc shared lib.

browser/Mercury.options
	Added mer_mdbcomp library for target libmer_browser.dylib.

browser/Mmakefile
	Added --shlib-linker-install-name-path option to MC options.

doc/user_guide.texi
	Documented the --shlib-linker-install-name-path option.  The other
	options will be automatically set by the configure script and
	should never need to be set by the user, so they're not documented in
	the user guide.

runtime/Mmakefile
	Added rule to make the Darwin shared library.

scripts/Mercury.config.bootstrap.in
	Added default values for --shlib-linker-use-install-name and
	--shlib-linker-install-name-flag.

scripts/Mercury.config.in
	Added default values for --shlib-linker-use-install-name and
	--shlib-linker-install-name-flag.

trace/Mmakefile
	Added rule to make the Darwin shared library.
2004-10-19 06:01:38 +00:00
Fergus Henderson
b5644bb1ee Ensure that libmer_browser.so and libmer_trace.so link with
Estimated hours taken: 0.25
Branches: main

browser/Mercury.options:
trace/Mmakefile:
	Ensure that libmer_browser.so and libmer_trace.so link with
	the mer_mdbcomp library.  This is needed after my recent fix
	to ensure that the mer_mdbcomp library is referenced from the
	mer_browser library, rather than being included in it.

compiler/Mmakefile:
	Add a missing dependency on libmer_mdbcomp.$A.
2003-12-10 07:04:24 +00:00
Zoltan Somogyi
ecdc285bc7 Split the existing browser library into two libraries, by making the
Estimated hours taken: 10
Branches: main

Split the existing browser library into two libraries, by making the
program_representation module into its own library. This is useful because
the compiler refers to program_representation.m, whose code thus needs to be
linked into compiler executables even if the compiler isn't compiled with
debugging enabled. By creating a new library for this module, we avoid any
chance of the linker dragging in the rest of the modules in the browser
library. (This is a problem with an upcoming diff.).

The name of the new library is "mdbcomp", because the intention is that it
contain code that is shared between the debugger and the compiler. This means
mostly the definitions of data structures that the compiler generates for the
debugger, and the predicates that operate on them.

Mmake.common.in:
	Allow MDB_COMP_ as a prefix for symbol names in the browser directory.

Mmake.workspace:
	Add a make variable holding for the name of the new library, and
	add the name to the relevant lists of libraries.

	Avoid duplicating the lists of filenames that need to be updated
	when adding new libraries or changing their names.

Mmakefile:
	Use make variables to refer to library names.

browser/mdbcomp.m:
browser/mer_mdbcomp.m:
	Add these files as the top modules of the new library.

browser/program_representation.m:
	Make program_representation.m a submodule of mdbcomp, not mdb.

browser/program_representation.m:
browser/browser_info.m:
	Move a predicate from program_representation.m to browser_info.m
	to avoid the mdbcomp library depend on the browser library, since
	this would negate the point of the exercise.

browser/mdb.m:
	Delete program_representation.m from the list of submodules.

browser/Mmakefile:
	Update this file to handle the new module.

browser/Mercury.options:
	Mention the new module.

browser/*.m:
	Update the lists of imported modules. Import only one browser module
	per line.

compiler/notes/overall_design.html:
	Document the new library.

compiler/compile_target_code.m:
	Add the mdbcomp library to the list of libraries we need to link with.

compiler/prog_rep.m:
trace/mercury_trace_internal.c:
	Import program_representation.m by its new name.

scripts/c2init.in:
	Centralize knowledge about which files need to be updated when the list
	of libraries changes here.

scripts/c2init.in:
scripts/ml.in:
tools/binary:
tools/binary_step:
tools/bootcheck:
tools/linear:
tools/lml:
	Update the list of libraries programs are linked with.
2003-10-27 06:00:50 +00:00
Simon Taylor
9406f99f9d Allow tools/bootcheck to be run using `mmake --use-mmc-make'.
Estimated hours taken: 5
Branches: main

Allow tools/bootcheck to be run using `mmake --use-mmc-make'.
The tests don't work yet.

compiler/make.m:
compiler/make.module_target.m:
	Handle targets such as `<module>.cs' and `<module>.ints',
	which are used when building stage 3.

Mmake.common.in:
*/Mmakefile:
*/Mercury.options:
	Add Mercury.options files to pass module-specific flags to
	`mmc --make'.

	Avoid triggering the .DEFAULT rule introduced with `--use-mmc-make'
	for optional files like Mmake.params.

compiler/modules.m:
	Build the interface files when building a library in IL grades,
	for consistency with C grades.

library/Mmakefile:
	Improve performance by removing the dependency on the interface
	files when building the library. The files are now always built
	by the libmer_std target.

	Pass the command to build libmer_std.init to `mmc --make'.

tools/bootcheck:
	Add an option `--use-mmc-make'.

	Copy the Mercury.options files into the stage2 and stage3 directories.

scripts/Mmake.rules:
	Don't include the rules for `.dep' files with `--use-mmc-make'.

	Include the rule for `--convert-to-mercury' even with `--use-mmc-make'.

compiler/Mmakefile:
tools/bootcheck:
tools/binary_step:
	`mmc --make' doesn't handle `<module>_init.c' targets, so
	don't make the `cs' target depend on `top_level_init.c'.
	As far as I can tell, that dependency is only present so
	that the stage2 and stage3 compilers have the same set of
	C files. bootcheck and binary_step now only compare `.c'
	files which are present in the stage3 directory.
2002-06-22 19:16:15 +00:00