Remove an unused predicate.

compiler/mercury_compile.m:
    Remove the mercury_compile_asm_c_code predicate, which was part of the
    now-deleted asm backend.
Fix a comment.
Address Julien's review comments.

compiler/format_call.m:
    Fix typos, and update a comment about future work.

compiler/parse_string_format.m:
    Use the right copyright.

library/Mmakefile:
    Fix issues with spaces vs tabs, and tabstop settings.
Do not transform calls to format predicates if debugging is enabled.
Add map.{foldl,foldr}5/12.

Add missing (mdi, muo) and semidet modes for map.foldl4 (foldr4 already has
them).

Strip unnecessary module qualification from the interface of the tree234 module
as per the current coding standard.

library/map.m:
	Add the above predicates.

	Add missing modes for map.foldl4/10.

library/tree234.m:
	Implement foldl5/12 and foldr5/12.

	Add missing modes for tree234.foldl4/10.

	Strip unnecessary module qualification.

NEWS:
	Announce the above additions.
Speed up map.{intersect,common,union} a bit.

library/map.m:
    The implementations of map.intersect, map.common and map.union all
    loop over the elements in their input maps, and (under different
    conditions) add them to a new map. This diff changes the loop predicates
    so that they build an assoc list instead, which is then turned into
    a map (a balanced 234 tree) at the end. This avoids the construction
    of all the intermediate versions of the map, which would involve
    a lot of rebalancing.

    On the compiler, this yields a very small speedup, but the speedup
    can be expected to grow with the size of the input lists, since insertions
    into deeper trees need more rebalancing on average.
Specialize calls to stream.string_writer.format.

compiler/format_call.m:
    As above.

    Factor out some common code.

compiler/module_imports.m:
    Fix a cut-and-paste bug.

library/builtin_modules.m:
    Add a way to retrieve the name of the stream module, since the compiler
    can now generate calls to stream.put.

tests/hard_codes/opt_format.{m,exp}:
    Expand this test case to include tests of calls to
    stream.string_writer.format.

    Make the existing tests a bit tougher as well.
Simplify the deep profiler's feedback mechanism.

mdbcomp/feedback.m:
    Accessing the old representation of feedback information required
    using partially instantiated data structures, dynamic type checking,
    and purity promises. Replace this with a straightforward representation,
    a tuple with a separate field for each supported kind of feedback
    information that contains "yes(...)" if feedback of the given type is
    available and "no" if it isn't.

    Document all the places that need to be updated when a new kind
    of feedback information is added.

    Remove the feedback information used by Tannier's old attempt
    at automatic parallelization, since it hasn't been supported for
    a while now, and won't be in the future.

    The feedback_info structure had a field named fi_program_name that
    comments on several predicates have identified as being the name of
    the Mercury system program (such as mdprof_create_report) that created
    the feedback_info structure. It was actually intended to hold the
    name of the program whose execution yielded the profiling data
    that the feedback_info was created from, and therefore the program
    whose recompilation the feedback_info was intended to help. This diff
    switches the documented meaning of the field from the former to the latter.
    To this end:

    - we rename the field;
    - we fix the comments referring to it,
    - we check whether the names match when new feedback data is added;
    - we check whether the actual program name matches the expected program
      name (if any) when reading in a feedback file, instead of delaying
      the check until later; and
    - we make write_feedback_file use the name in the feedback_info structure
      when writing it out, instead of a name redundantly supplied by its
      caller.

    In clients of feedback.m, some code used to put a program name into
    a feedback_info, and then later check whether the name in there was
    still the one it put there earlier. With this diff, we delete the check.
    We can do this because the profiled program name field of each
    feedback_info is set at initialization, and never changed afterwards.

    We now put a wrapper around each piece of feedback information in the
    texts of feedback files, to tell the code reading the file WHAT KIND
    of feedback information it is. We therefore increment the feedback file
    format version number.

    Group related predicates together.

    Give some predicates better (less ambiguous) names.

    Add prefixes to the names of some function symbols that are
    ambiguous without them.

compiler/handle_options.m:
compiler/introduce_parallelism.m:
deep_profiler/autopar_reports.m:
deep_profiler/autopar_search_callgraph.m:
deep_profiler/mdprof_create_feedback.m:
deep_profiler/mdprof_report_feedback.m:
    Conform to the changes in mdbcomp/feedback.m
Make tools/stdlines operate on any files.
Simplify and improve calls to format preds.

library/string.parse_runtime.m:
    Replace the two previous two level scheme for representing format string
    components with a simpler one level scheme, which should avoid some
    memory allocations, and which should also make switches faster.

library/string.format.m:
    Conform to the change in string.parse_runtime.m.

compiler/parse_string_format.m:
    Replace the two previous two level scheme for representing format string
    components with a one level scheme, as in string.parse_runtime.m.

    Record the context of all the values to be printed.

compiler/format_call.m:
    Previously, when we replaced calls to format predicates with calls
    that formatted each value to be printed, we used term.context_init as
    the context of the replacement goals. We now use the contexts recorded for
    the value. Likewise, for the calls to predicates that concatenated the
    results together, we now use the context of the original call.
    This should give more useful information to anyone who uses the deep
    profiler on code that was transformed by format_call.m.

    Avoid unnecessary updates to the conj_maps, which should make
    the operation of format_call.m itself faster.

    Gather identified format call sites immediately even inside disjunctions,
    instead of creating a list of the sites inside each disjunct, and then
    appending it to the end of the list of sites so far. This should also
    improve the speed of format_call.m.

library/maybe.m:
    Add a maybe_errors type, which is like maybe_error, but in which the
    error case contains one OR MORE error indications.

NEWS:
    Mention the new maybe_errors type.
Fix problems preventing the system building in non-C grades.

compiler/mode_info.m:
	Avoid a warning due to he Mercury clause for the predicate
	old_and_new_may_differ/2 having too tight a determinism.

compiler/pickle.m:
	Fix cut-and-paste errors in Erlang foreign procs.

deep_profiler/DEEP_FLAGS.in:
	Specify the location of the Erlang library headers.
Fix Mantis bug #367.

library/array.m:
    When doing a binary search using a user-supplied comparison function,
    do not use the builtin term comparison operation to compare elements.

    Use separate loops for binary_search and approx_binary_search, since
    using the loop for approx_binary_search in the implementation of
    binary_search executes some unnecessary extra tests.

    Improve the documentation of both binary_search and approx_binary_search.

tests/general/array_binsearch.{m,exp}:
    Rewrite this test case to make it much tougher, testing the operation
    of binary_search and approx_binary_search with both the builtin and
    user-supplied comparison operations, and in the presence of repeated
    elements, and with automatic verification of the results.
Additions for the calendar module.

library/calendar.m:
    Add predicates and functions for converting between 1-based
    and 0-based month numbers and values of the month/0 type.
    The former are useful when dealing with human-provided dates
    whereas the latter are useful when interacting with dates
    provided from some foreign language (C and Java for example).

    Add a predicate for testing for equality of dates ignoring
    their time component.

    Replace the locally defined predicate char_to_digit/2 with
    calls to char.decimal_digit_to_int/2

    Fix some formatting issues.

tests/hard_coded/calendar_test.{m,exp}:
    Extend this test case to cover the functionality added
    above.

NEWS:
        Announce the additions.
Mark array.bsearch as obsolete.
Stand-alone interfaces and non-C grades.

Clarify the situation with stand-alone interfaces and non-C grades.  The
documentation currently says that they are not currently supported for the
non-C grades, which is inaccurate.  They are not actually required for the Java
and C# backends.  The may however be needed for Erlang.

doc/user_guide.texi:
	Stand-alone interface are *not* required if the target language is
	C# or Java.

compiler/mercury_compiler.m:
	Fix an XXX: generate a more accurate error message if
	'--generate-standalone-interface' is used with one of the
	non-C target languages.
Remove some unnecessary XXXs.
Fix an issue with potential code reordering.
Get configure to repeat some important parameters.

Some of the most important autoconfigured parameters are echoed by the
configure script in the middle of its long output, making them hard to find.
Repeat these parameters (the installed compiler if any, the default grade,
the grade the workspace will be compiled in, and the target prefix if any)
at the end, to make them easy to see without scrolling back or searching.

Fix some other minor nits.