[m-rev.] for post-commit review: more enhancements of potentional parallelism

Zoltan Somogyi zs at csse.unimelb.edu.au
Mon Aug 23 17:37:12 AEST 2010


Avoid more dependencies between the processing of different procedures
when the compiler is executed in parallel.

compiler/accumulator.m:
	Instead of printing out error messages here, pass error_specs back
	to the top level.

compiler/complexity.m:
	Use trace goals to print progress messages.

compiler/passes_aux.m:
	Add the traversal type now needed by accumulator.m, and remove others
	that are no longer needed. Since now NO task needs I/O states, make
	the traversal predicates not take I/O state pair arguments any more.

compiler/deforest.m:
compiler/mercury_compile_llds_back_end.m:
compiler/mercury_compile_mlds_back_end.m:
compiler/mercury_compile_middle_passes.m:
compiler/ssdebug.m:
compiler/structure_reuse.analysis.m:
compiler/structure_sharing.analysis.m:
	Conform to the changes in passes_aux.m and in accumulator.m.

compiler/error_util.m:
compiler/pd_util.m:
	Style fixes.

tests/warnings/arg_order_rearrangement.exp:
	Expect the new and improved warning message.

tests/warnings/arg_order_rearrangement.exp2:
	Mark this file as not an expected output, since a part of it
	doesn't seem to be ever generated by the compiler anymore.

Zoltan.

cvs diff: Diffing .
cvs diff: Diffing analysis
cvs diff: Diffing bindist
cvs diff: Diffing boehm_gc
cvs diff: Diffing boehm_gc/Mac_files
cvs diff: Diffing boehm_gc/cord
cvs diff: Diffing boehm_gc/cord/private
cvs diff: Diffing boehm_gc/doc
cvs diff: Diffing boehm_gc/extra
cvs diff: Diffing boehm_gc/include
cvs diff: Diffing boehm_gc/include/extra
cvs diff: Diffing boehm_gc/include/private
cvs diff: Diffing boehm_gc/libatomic_ops
cvs diff: Diffing boehm_gc/libatomic_ops/doc
cvs diff: Diffing boehm_gc/libatomic_ops/src
cvs diff: Diffing boehm_gc/libatomic_ops/src/atomic_ops
cvs diff: Diffing boehm_gc/libatomic_ops/src/atomic_ops/sysdeps
cvs diff: Diffing boehm_gc/libatomic_ops/src/atomic_ops/sysdeps/armcc
cvs diff: Diffing boehm_gc/libatomic_ops/src/atomic_ops/sysdeps/gcc
cvs diff: Diffing boehm_gc/libatomic_ops/src/atomic_ops/sysdeps/hpc
cvs diff: Diffing boehm_gc/libatomic_ops/src/atomic_ops/sysdeps/ibmc
cvs diff: Diffing boehm_gc/libatomic_ops/src/atomic_ops/sysdeps/icc
cvs diff: Diffing boehm_gc/libatomic_ops/src/atomic_ops/sysdeps/msftc
cvs diff: Diffing boehm_gc/libatomic_ops/src/atomic_ops/sysdeps/sunc
cvs diff: Diffing boehm_gc/libatomic_ops/tests
cvs diff: Diffing boehm_gc/libatomic_ops-1.2
cvs diff: Diffing boehm_gc/libatomic_ops-1.2/doc
cvs diff: Diffing boehm_gc/libatomic_ops-1.2/src
cvs diff: Diffing boehm_gc/libatomic_ops-1.2/src/atomic_ops
cvs diff: Diffing boehm_gc/libatomic_ops-1.2/src/atomic_ops/sysdeps
cvs diff: Diffing boehm_gc/libatomic_ops-1.2/tests
cvs diff: Diffing boehm_gc/m4
cvs diff: Diffing boehm_gc/tests
cvs diff: Diffing browser
cvs diff: Diffing bytecode
cvs diff: Diffing compiler
Index: compiler/accumulator.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/accumulator.m,v
retrieving revision 1.78
diff -u -b -r1.78 accumulator.m
--- compiler/accumulator.m	5 Aug 2010 03:07:08 -0000	1.78
+++ compiler/accumulator.m	5 Aug 2010 08:56:11 -0000
@@ -148,11 +148,16 @@
 :- import_module hlds.hlds_module.
 :- import_module hlds.hlds_pred.
 
-:- import_module io.
+:- import_module univ.
 
-:- pred accumulator.process_proc(pred_proc_id::in,
+    % Attempt to transform a procedure into accumulator recursive form.
+    % If we succeed, we will add the recursive version of the procedure
+    % to the module_info. However, we may also encounter errors, which
+    % we will add to the list of error_specs in the univ accumulator.
+    %
+:- pred accumulator.process_proc(pred_proc_id::in, pred_info::in,
     proc_info::in, proc_info::out, module_info::in, module_info::out,
-    io::di, io::uo) is det.
+    univ::in, univ::out) is det.
 
 %-----------------------------------------------------------------------------%
 %-----------------------------------------------------------------------------%
@@ -182,8 +187,10 @@
 :- import_module assoc_list.
 :- import_module bool.
 :- import_module int.
+:- import_module io.
 :- import_module list.
 :- import_module map.
+:- import_module maybe.
 :- import_module pair.
 :- import_module set.
 :- import_module solutions.
@@ -228,15 +235,13 @@
 
 %-----------------------------------------------------------------------------%
 
-    % Attempt to transform a procedure into accumulator recursive form.
-    %
-process_proc(proc(PredId, ProcId), !ProcInfo, !ModuleInfo, !IO) :-
+process_proc(proc(PredId, ProcId), PredInfo, !ProcInfo, !ModuleInfo,
+        !Cookie) :-
     module_info_get_globals(!.ModuleInfo, Globals),
     globals.lookup_bool_option(Globals,
         optimize_constructor_last_call_accumulator, DoLCO),
     globals.lookup_bool_option(Globals, fully_strict, FullyStrict),
     (
-        module_info_pred_info(!.ModuleInfo, PredId, PredInfo),
         attempt_transform(ProcId, PredId, PredInfo, DoLCO, FullyStrict,
             !ProcInfo, !ModuleInfo, Warnings)
     ->
@@ -252,35 +257,39 @@
             VeryVerbose = no
         ),
 
-        globals.lookup_bool_option(Globals, inhibit_accumulator_warnings,
-            InhibitWarnings),
         (
-            ( InhibitWarnings = yes
-            ; Warnings = []
-            )
-        ->
-            true
+            Warnings = []
         ;
+            Warnings = [_ | _],
             pred_info_get_context(PredInfo, Context),
             PredPieces = describe_one_pred_name(!.ModuleInfo,
                 should_module_qualify, PredId),
-            write_error_pieces(Globals, Context, 0, [words("In") | PredPieces],
-                !IO),
+            InPieces = [words("In") | PredPieces] ++ [suffix(":"), nl],
+            InMsg = simple_msg(Context,
+                [option_is_set(inhibit_accumulator_warnings, no,
+                    [always(InPieces)])]),
 
             proc_info_get_varset(!.ProcInfo, VarSet),
-            output_warnings(Warnings, VarSet, !.ModuleInfo, !IO),
-
-            Pieces1 = [words("Please ensure that these"),
+            generate_warnings(!.ModuleInfo, VarSet, Warnings, WarnMsgs),
+            (
+                Warnings = [_],
+                EnsurePieces = [words("Please ensure that this"),
+                    words("argument rearrangement does not introduce"),
+                    words("performance problems.")]
+            ;
+                Warnings = [_, _ | _],
+                EnsurePieces = [words("Please ensure that these"),
                 words("argument rearrangements do not introduce"),
-                words("performance problems."),
-                words("These warnings can be suppressed by"),
+                    words("performance problems.")]
+            ),
+            SuppressPieces =
+                [words("These warnings can be suppressed by"),
                 words("`--inhibit-accumulator-warnings'.")],
-            write_error_pieces(Globals, Context, 2, Pieces1, !IO),
+            EnsureSuppressMsg = simple_msg(Context,
+                [option_is_set(inhibit_accumulator_warnings, no,
+                    [always(EnsurePieces), always(SuppressPieces)])]),
 
-            globals.lookup_bool_option(Globals, verbose_errors, VerboseErrors),
-            (
-                VerboseErrors = yes,
-                Pieces2 = [words("If a predicate has been declared"),
+            VerbosePieces = [words("If a predicate has been declared"),
                     words("associative via a `promise' declaration,"),
                     words("the compiler will rearrange the order of"),
                     words("the arguments in calls to that predicate,"),
@@ -289,23 +298,20 @@
                     words("will issue this warning. If this reordering"),
                     words("changes the performance characteristics"),
                     words("of the call to the predicate, use"),
-                    words("`--no-accumulator-introduction' to turn"),
-                    words("the optimization off, or "),
-                    words("`--inhibit-accumulator-warnings' to turn off"),
-                    words("the warnings.")],
-                write_error_pieces(Globals, Context, 2, Pieces2, !IO)
-            ;
-                VerboseErrors = no,
-                globals.io_set_extra_error_info(yes, !IO)
-            ),
-            globals.lookup_bool_option(Globals, halt_at_warn, HaltAtWarn),
-            (
-                HaltAtWarn = yes,
-                io.set_exit_status(1, !IO),
-                module_info_incr_errors(!ModuleInfo)
-            ;
-                HaltAtWarn = no
-            )
+                words("`--no-accumulator-introduction'"),
+                words("to turn the optimization off, or "),
+                words("`--inhibit-accumulator-warnings'"),
+                words("to turn off the warnings.")],
+            VerboseMsg = simple_msg(Context, [verbose_only(VerbosePieces)]),
+
+            Severity = severity_conditional(inhibit_accumulator_warnings, no,
+                severity_warning, no),
+            Msgs = [InMsg | WarnMsgs] ++ [EnsureSuppressMsg, VerboseMsg],
+            Spec = error_spec(Severity, phase_accumulator_intro, Msgs),
+
+            det_univ_to_type(!.Cookie, Specs0),
+            Specs = [Spec | Specs0],
+            type_to_univ(Specs, !:Cookie)
         )
     ;
         true
@@ -314,33 +320,30 @@
 %-----------------------------------------------------------------------------%
 %-----------------------------------------------------------------------------%
 
-:- pred output_warnings(list(warning)::in, prog_varset::in,
-    module_info::in, io::di, io::uo) is det.
+:- pred generate_warnings(module_info::in, prog_varset::in, list(warning)::in,
+    list(error_msg)::out) is det.
 
-output_warnings([], _, _, !IO).
-output_warnings([W | Ws], VarSet, ModuleInfo, !IO) :-
-    output_warning(W, VarSet, ModuleInfo, Context, Format),
-    module_info_get_globals(ModuleInfo, Globals),
-    write_error_pieces(Globals, Context, 2, Format, !IO),
-    output_warnings(Ws, VarSet, ModuleInfo, !IO).
+generate_warnings(_, _, [], []).
+generate_warnings(ModuleInfo, VarSet, [Warning | Warnings], [Msg | Msgs]) :-
+    generate_warning(ModuleInfo, VarSet, Warning, Msg),
+    generate_warnings(ModuleInfo, VarSet, Warnings, Msgs).
 
-:- pred output_warning(warning::in, prog_varset::in, module_info::in,
-    prog_context::out, list(format_component)::out) is det.
+:- pred generate_warning(module_info::in, prog_varset::in, warning::in,
+    error_msg::out) is det.
 
-output_warning(warn(Context, PredId, VarA, VarB), VarSet, ModuleInfo,
-        Context, Formats) :-
+generate_warning(ModuleInfo, VarSet, Warning, Msg) :-
+    Warning = warn(Context, PredId, VarA, VarB),
     PredPieces = describe_one_pred_name(ModuleInfo, should_module_qualify,
         PredId),
 
-    varset.lookup_name(VarSet, VarA, VarAStr0),
-    varset.lookup_name(VarSet, VarB, VarBStr0),
-    VarAStr = string.append_list(["`", VarAStr0, "'"]),
-    VarBStr = string.append_list(["`", VarBStr0, "'"]),
+    varset.lookup_name(VarSet, VarA, VarAName),
+    varset.lookup_name(VarSet, VarB, VarBName),
 
-    Formats = [words("warning: the call to")] ++ PredPieces ++
+    Pieces = [words("warning: the call to")] ++ PredPieces ++
         [words("has had the location of the variables"),
-        words(VarAStr), words("and"), words(VarBStr),
-        words("swapped to allow accumulator introduction.")].
+        quote(VarAName), words("and"), quote(VarBName),
+        words("swapped to allow accumulator introduction."), nl],
+    Msg = simple_msg(Context, [always(Pieces)]).
 
 %-----------------------------------------------------------------------------%
 %-----------------------------------------------------------------------------%
@@ -723,7 +726,7 @@
             construct(N - I, K, GoalStore, !.Sets, FullyStrict, VarTypes,
                 ModuleInfo)
         ->
-            !:Sets = !.Sets ^ construct :=
+            !Sets ^ construct :=
                 set.insert(!.Sets ^ construct, N - I),
             stage1_2(N - (I+1), K, M, GoalStore, FullyStrict, VarTypes,
                 ModuleInfo, !Sets)
@@ -731,7 +734,7 @@
             construct_assoc(N - I, K, GoalStore, !.Sets, FullyStrict, VarTypes,
                 ModuleInfo)
         ->
-            !:Sets = !.Sets ^ construct_assoc :=
+            !Sets ^ construct_assoc :=
                 set.insert(!.Sets ^ construct_assoc, N-I),
             stage1_2(N - (I+1), K, M, GoalStore, FullyStrict, VarTypes,
                 ModuleInfo, !Sets)
@@ -739,11 +742,11 @@
             update(N - I, K, GoalStore, !.Sets, FullyStrict, VarTypes,
                 ModuleInfo)
         ->
-            !:Sets = !.Sets ^ update := set.insert(!.Sets ^ update, N - I),
+            !Sets ^ update := set.insert(!.Sets ^ update, N - I),
             stage1_2(N - (I+1), K, M, GoalStore, FullyStrict, VarTypes,
                 ModuleInfo, !Sets)
         ;
-            !:Sets = !.Sets ^ reject := set.insert(!.Sets ^ reject, N - I)
+            !Sets ^ reject := set.insert(!.Sets ^ reject, N - I)
         )
     ).
 
@@ -1395,9 +1398,8 @@
 %-----------------------------------------------------------------------------%
 
     % stage3 creates the accumulator version of the predicate using
-    % the substitutions determined in stage2, it also redefines the
-    % original procedure to call the accumulator version of the
-    % procedure.
+    % the substitutions determined in stage2. It also redefines the
+    % original procedure to call the accumulator version of the procedure.
     %
 :- pred stage3(goal_id::in, prog_vars::in, prog_varset::in, vartypes::in,
     goal_store::in, goal_store::in, substs::in, subst::in,
Index: compiler/complexity.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/complexity.m,v
retrieving revision 1.36
diff -u -b -r1.36 complexity.m
--- compiler/complexity.m	5 Aug 2010 03:07:08 -0000	1.36
+++ compiler/complexity.m	5 Aug 2010 04:35:08 -0000
@@ -51,7 +51,7 @@
     %
 :- pred process_proc_msg(int::in, complexity_proc_map::in,
     pred_proc_id::in, proc_info::in, proc_info::out,
-    module_info::in, module_info::out, io::di, io::uo) is det.
+    module_info::in, module_info::out) is det.
 
 %-----------------------------------------------------------------------------%
 %-----------------------------------------------------------------------------%
@@ -64,6 +64,7 @@
 :- import_module hlds.goal_util.
 :- import_module hlds.hlds_goal.
 :- import_module hlds.instmap.
+:- import_module hlds.passes_aux.
 :- import_module hlds.pred_table.
 :- import_module libs.compiler_util.
 :- import_module libs.globals.
@@ -158,7 +159,7 @@
 %-----------------------------------------------------------------------------%
 
 process_proc_msg(NumProcs, ProcMap, proc(PredId, ProcId), !ProcInfo,
-        !ModuleInfo, !IO) :-
+        !ModuleInfo) :-
     IsInMap = is_in_complexity_proc_map(ProcMap, !.ModuleInfo,
         PredId, ProcId),
     (
@@ -168,14 +169,11 @@
         globals.lookup_bool_option(Globals, verbose, Verbose),
         (
             Verbose = yes,
-            pred_id_to_int(PredId, PredIdInt),
-            proc_id_to_int(ProcId, ProcIdInt),
-            Pieces =
-                [words("% Applying complexity experiment transformation to "),
-                fixed(FullName ++ ":"),
-                fixed(int_to_string(PredIdInt) ++ "/" ++
-                    int_to_string(ProcIdInt))],
-            write_error_pieces_plain(Globals, Pieces, !IO)
+            trace [io(!IO)] (
+                write_proc_progress_message(
+                    "% Applying complexity experiment transformation to ",
+                    PredId, ProcId, !.ModuleInfo, !IO)
+            )
         ;
             Verbose = no
         ),
Index: compiler/deforest.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/deforest.m,v
retrieving revision 1.94
diff -u -b -r1.94 deforest.m
--- compiler/deforest.m	5 Aug 2010 03:07:08 -0000	1.94
+++ compiler/deforest.m	5 Aug 2010 04:30:31 -0000
@@ -99,7 +99,7 @@
     % Find out which arguments of each procedure are switched on at the top
     % level or are constructed in a way which is possibly deforestable.
     Task0 = update_module_cookie(get_branch_vars_proc_univ, UnivProcArgInfo0),
-    process_all_nonimported_procs_update(Task0, Task, !ModuleInfo, !IO),
+    process_all_nonimported_procs_update(Task0, Task, !ModuleInfo),
     (
         Task = update_module_cookie(_, UnivProcArgInfo),
         univ_to_type(UnivProcArgInfo, ProcArgInfo1)
@@ -177,13 +177,10 @@
 
 get_branch_vars_proc_univ(PredProcId, ProcInfo, ProcInfo,
         !ModuleInfo, UnivProcArgInfo0, UnivProcArgInfo) :-
-    ( univ_to_type(UnivProcArgInfo0, ProcArgInfo0) ->
-        pd_util.get_branch_vars_proc(PredProcId, ProcInfo,
-            !ModuleInfo, ProcArgInfo0, ProcArgInfo),
-        type_to_univ(ProcArgInfo, UnivProcArgInfo)
-    ;
-        unexpected(this_file, "get_branch_vars_proc_univ")
-    ).
+    det_univ_to_type(UnivProcArgInfo0, ProcArgInfo0),
+    pd_util.get_branch_vars_proc(PredProcId, ProcInfo, !ModuleInfo,
+        ProcArgInfo0, ProcArgInfo),
+    type_to_univ(ProcArgInfo, UnivProcArgInfo).
 
 :- pred deforest_proc(pred_proc_id::in, pd_info::in, pd_info::out) is det.
 
Index: compiler/error_util.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/error_util.m,v
retrieving revision 1.74
diff -u -b -r1.74 error_util.m
--- compiler/error_util.m	4 Jul 2010 10:24:07 -0000	1.74
+++ compiler/error_util.m	5 Aug 2010 07:49:25 -0000
@@ -184,9 +184,7 @@
             % that help debug the compiler itself.
 
 :- typeclass print_anything(T) where [
-
     pred print_anything(T::in, io::di, io::uo) is det
-
 ].
 
 %-----------------------------------------------------------------------------%
Index: compiler/mercury_compile_llds_back_end.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/mercury_compile_llds_back_end.m,v
retrieving revision 1.7
diff -u -b -r1.7 mercury_compile_llds_back_end.m
--- compiler/mercury_compile_llds_back_end.m	5 Aug 2010 03:07:09 -0000	1.7
+++ compiler/mercury_compile_llds_back_end.m	5 Aug 2010 06:47:34 -0000
@@ -421,8 +421,7 @@
         maybe_write_string(Verbose,
             "% Minimizing variable saves using constants...\n", !IO),
         maybe_flush_output(Verbose, !IO),
-        process_all_nonimported_procs(update_module(saved_vars_proc),
-            !HLDS, !IO),
+        process_all_nonimported_procs(update_module(saved_vars_proc), !HLDS),
         maybe_write_string(Verbose, "% done.\n", !IO),
         maybe_report_stats(Stats, !IO)
     ;
@@ -440,8 +439,7 @@
         maybe_write_string(Verbose,
             "% Minimizing variable saves using cells...\n", !IO),
         maybe_flush_output(Verbose, !IO),
-        process_all_nonimported_procs(update_module(stack_opt_cell),
-            !HLDS, !IO),
+        process_all_nonimported_procs(update_module(stack_opt_cell), !HLDS),
         maybe_write_string(Verbose, "% done.\n", !IO),
         maybe_report_stats(Stats, !IO)
     ;
@@ -459,7 +457,7 @@
         maybe_write_string(Verbose, "% Migrating branch code...", !IO),
         maybe_flush_output(Verbose, !IO),
         process_all_nonimported_procs(update_module(move_follow_code_in_proc),
-            !HLDS, !IO),
+            !HLDS),
         maybe_write_string(Verbose, " done.\n", !IO),
         maybe_report_stats(Stats, !IO)
     ;
@@ -482,7 +480,7 @@
         detect_liveness_preds_parallel(!HLDS)
     ;
         process_all_nonimported_procs(update_proc_ids(detect_liveness_proc),
-            !HLDS, !IO)
+            !HLDS)
     ),
     maybe_write_string(Verbose, "% done.\n", !IO),
     maybe_report_stats(Stats, !IO).
@@ -500,7 +498,7 @@
         maybe_flush_output(Verbose, !IO),
         process_all_nonimported_procs(
             update_proc_ids_pred(mark_tail_calls(feature_debug_tail_rec_call)),
-            !HLDS, !IO),
+            !HLDS),
         maybe_write_string(Verbose, " done.\n", !IO),
         maybe_report_stats(Stats, !IO)
     ;
@@ -514,7 +512,7 @@
     maybe_write_string(Verbose, "% Computing stack vars...", !IO),
     maybe_flush_output(Verbose, !IO),
     process_all_nonimported_procs(
-        update_proc_ids(allocate_stack_slots_in_proc), !HLDS, !IO),
+        update_proc_ids(allocate_stack_slots_in_proc), !HLDS),
     maybe_write_string(Verbose, " done.\n", !IO),
     maybe_report_stats(Stats, !IO).
 
@@ -525,7 +523,7 @@
     maybe_write_string(Verbose, "% Allocating store map...", !IO),
     maybe_flush_output(Verbose, !IO),
     process_all_nonimported_procs(
-        update_proc_ids(allocate_store_maps(final_allocation)), !HLDS, !IO),
+        update_proc_ids(allocate_store_maps(final_allocation)), !HLDS),
     maybe_write_string(Verbose, " done.\n", !IO),
     maybe_report_stats(Stats, !IO).
 
@@ -539,7 +537,7 @@
         maybe_write_string(Verbose, "% Calculating goal paths...", !IO),
         maybe_flush_output(Verbose, !IO),
         process_all_nonimported_procs(update_proc(fill_goal_path_slots),
-            !HLDS, !IO),
+            !HLDS),
         maybe_write_string(Verbose, " done.\n", !IO),
         maybe_report_stats(Stats, !IO)
     ;
Index: compiler/mercury_compile_middle_passes.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/mercury_compile_middle_passes.m,v
retrieving revision 1.6
diff -u -b -r1.6 mercury_compile_middle_passes.m
--- compiler/mercury_compile_middle_passes.m	5 Aug 2010 03:07:09 -0000	1.6
+++ compiler/mercury_compile_middle_passes.m	5 Aug 2010 04:29:36 -0000
@@ -102,6 +102,7 @@
 :- import_module pair.
 :- import_module set.
 :- import_module string.
+:- import_module univ.
 
 %-----------------------------------------------------------------------------%
 
@@ -898,8 +899,19 @@
         maybe_write_string(Verbose,
             "% Attempting to introduce accumulators...\n", !IO),
         maybe_flush_output(Verbose, !IO),
-        process_all_nonimported_procs(
-            update_module_io(accumulator.process_proc), !HLDS, !IO),
+        type_to_univ([] : list(error_spec), Cookie0),
+        Task0 = update_module_pred_cookie(accumulator.process_proc, Cookie0),
+        process_all_nonimported_procs_update(Task0, Task, !HLDS),
+        (
+            Task = update_module_pred_cookie(_, Cookie),
+            univ_to_type(Cookie, SpecsPrime)
+        ->
+            Specs = SpecsPrime
+        ;
+            unexpected(this_file, "maybe_introduce_accumulators: bad task")
+        ),
+        write_error_specs(Specs, Globals, 0, _NumWarnings, 0, NumErrors, !IO),
+        module_info_incr_num_errors(NumErrors, !HLDS),
         maybe_write_string(Verbose, "% done.\n", !IO),
         maybe_report_stats(Stats, !IO)
     ;
@@ -952,8 +964,7 @@
         maybe_write_string(Verbose, "% Hoisting loop invariants...\n", !IO),
         maybe_flush_output(Verbose, !IO),
         process_all_nonimported_procs(
-            update_module_pred(hoist_loop_invariants),
-            !HLDS, !IO),
+            update_module_pred(hoist_loop_invariants), !HLDS),
         maybe_write_string(Verbose, "% done.\n", !IO),
         maybe_report_stats(Stats, !IO)
     ;
@@ -1017,7 +1028,7 @@
             "% Delaying construction unifications ...\n", !IO),
         maybe_flush_output(Verbose, !IO),
         process_all_nonimported_procs(update_proc_ids(delay_construct_proc),
-            !HLDS, !IO),
+            !HLDS),
         maybe_write_string(Verbose, "% done.\n", !IO),
         maybe_report_stats(Stats, !IO)
     ;
@@ -1119,7 +1130,7 @@
             "% Removing unneeded code from procedure bodies...\n", !IO),
         maybe_flush_output(Verbose, !IO),
         process_all_nonimported_procs(update_module(unneeded_process_proc_msg),
-            !HLDS, !IO),
+            !HLDS),
         maybe_write_string(Verbose, "% done.\n", !IO),
         maybe_report_stats(Stats, !IO)
     ;
@@ -1272,7 +1283,7 @@
         (
             SupportsParConj = no,
             process_all_nonimported_procs(update_proc(parallel_to_plain_conjs),
-                !HLDS, !IO)
+                !HLDS)
         ;
             SupportsParConj = yes,
             maybe_write_string(Verbose,
@@ -1319,8 +1330,7 @@
             "% Applying term size profiling transformation...\n", !IO),
         maybe_flush_output(Verbose, !IO),
         process_all_nonimported_procs(
-            update_module(size_prof_process_proc_msg(Transform)),
-            !HLDS, !IO),
+            update_module(size_prof_process_proc_msg(Transform)), !HLDS),
         maybe_write_string(Verbose, "% done.\n", !IO),
         maybe_report_stats(Stats, !IO)
     ;
@@ -1362,8 +1372,8 @@
             "% Applying complexity experiment transformation...\n", !IO),
         maybe_flush_output(Verbose, !IO),
         process_all_nonimported_procs(
-            update_module_io(complexity.process_proc_msg(NumProcs, ProcMap)),
-            !HLDS, !IO),
+            update_module(complexity.process_proc_msg(NumProcs, ProcMap)),
+            !HLDS),
         maybe_write_string(Verbose, "% done.\n", !IO),
         maybe_report_stats(Stats, !IO)
     ).
Index: compiler/mercury_compile_mlds_back_end.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/mercury_compile_mlds_back_end.m,v
retrieving revision 1.3
diff -u -b -r1.3 mercury_compile_mlds_back_end.m
--- compiler/mercury_compile_mlds_back_end.m	30 Mar 2010 23:57:25 -0000	1.3
+++ compiler/mercury_compile_mlds_back_end.m	5 Aug 2010 06:47:55 -0000
@@ -260,8 +260,7 @@
         SGCells = yes,
         maybe_write_string(Verbose, "% Marking static ground terms...\n", !IO),
         maybe_flush_output(Verbose, !IO),
-        process_all_nonimported_procs(update_proc(mark_static_terms),
-            !HLDS, !IO),
+        process_all_nonimported_procs(update_proc(mark_static_terms), !HLDS),
         maybe_write_string(Verbose, "% done.\n", !IO),
         maybe_report_stats(Stats, !IO)
     ;
@@ -312,8 +311,7 @@
         maybe_write_string(Verbose, "% Adding trailing operations...\n", !IO),
         maybe_flush_output(Verbose, !IO),
         process_all_nonimported_procs(
-            update_proc(add_trail_ops(OptTrailUse, GenerateInline)),
-            !HLDS, !IO),
+            update_proc(add_trail_ops(OptTrailUse, GenerateInline)), !HLDS),
         maybe_write_string(Verbose, "% done.\n", !IO),
         maybe_report_stats(Stats, !IO)
     ;
@@ -347,7 +345,7 @@
         maybe_write_string(Verbose,
             "% Adding heap reclamation operations...\n", !IO),
         maybe_flush_output(Verbose, !IO),
-        process_all_nonimported_procs(update_proc(add_heap_ops), !HLDS, !IO),
+        process_all_nonimported_procs(update_proc(add_heap_ops), !HLDS),
         maybe_write_string(Verbose, "% done.\n", !IO),
         maybe_report_stats(Stats, !IO)
     ;
Index: compiler/passes_aux.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/passes_aux.m,v
retrieving revision 1.97
diff -u -b -r1.97 passes_aux.m
--- compiler/passes_aux.m	5 Aug 2010 03:07:09 -0000	1.97
+++ compiler/passes_aux.m	5 Aug 2010 04:28:41 -0000
@@ -89,11 +89,6 @@
 :- inst proc_ids_pred_task ==
     (pred(in, in, in, in, out) is det).
 
-:- type proc_ids_io_task ==
-    pred(module_info, pred_proc_id, proc_info, proc_info, io, io).
-:- inst proc_ids_io_task ==
-    (pred(in, in, in, out, di, uo) is det).
-
 :- type module_task ==
     pred(pred_proc_id, proc_info, proc_info,
         module_info, module_info).
@@ -106,50 +101,48 @@
 :- inst module_pred_task ==
     (pred(in, in, in, out, in, out) is det).
 
-:- type module_io_task ==
-    pred(pred_proc_id, proc_info, proc_info,
-        module_info, module_info, io, io).
-:- inst module_io_task ==
-    (pred(in, in, out, in, out, di, uo) is det).
-
 :- type module_cookie_task ==
     pred(pred_proc_id, proc_info, proc_info,
         module_info, module_info, univ, univ).
 :- inst module_cookie_task ==
     (pred(in, in, out, in, out, in, out) is det).
 
+:- type module_pred_cookie_task ==
+    pred(pred_proc_id, pred_info, proc_info, proc_info,
+        module_info, module_info, univ, univ).
+:- inst module_pred_cookie_task ==
+    (pred(in, in, in, out, in, out, in, out) is det).
+
 %-----------------------------------------------------------------------------%
 
 :- type update_proc_task
     --->    update_proc(proc_task)
     ;       update_proc_ids(proc_ids_task)
     ;       update_proc_ids_pred(proc_ids_pred_task)
-    ;       update_proc_ids_io(proc_ids_io_task)
     ;       update_module(module_task)
     ;       update_module_pred(module_pred_task)
-    ;       update_module_io(module_io_task)
-    ;       update_module_cookie(module_cookie_task, univ).
+    ;       update_module_cookie(module_cookie_task, univ)
+    ;       update_module_pred_cookie(module_pred_cookie_task, univ).
 :- inst update_proc_task ==
     bound(
             update_proc(proc_task)
         ;   update_proc_ids(proc_ids_task)
         ;   update_proc_ids_pred(proc_ids_pred_task)
-        ;   update_proc_ids_io(proc_ids_io_task)
         ;   update_module(module_task)
         ;   update_module_pred(module_pred_task)
-        ;   update_module_io(module_io_task)
         ;   update_module_cookie(module_cookie_task, ground)
+        ;   update_module_pred_cookie(module_pred_cookie_task, ground)
     ).
 :- mode update_proc_task == update_proc_task >> update_proc_task.
 
 %-----------------------------------------------------------------------------%
 
 :- pred process_all_nonimported_procs(update_proc_task::update_proc_task,
-    module_info::in, module_info::out, io::di, io::uo) is det.
+    module_info::in, module_info::out) is det.
 
 :- pred process_all_nonimported_procs_update(
     update_proc_task::update_proc_task, update_proc_task::out(update_proc_task),
-    module_info::in, module_info::out, io::di, io::uo) is det.
+    module_info::in, module_info::out) is det.
 
 %-----------------------------------------------------------------------------%
 
@@ -268,18 +261,17 @@
 
 :- inst seq_proc_task ==
     bound(
-            update_proc_ids_io(proc_ids_io_task)
-        ;   update_module(module_task)
+            update_module(module_task)
         ;   update_module_pred(module_pred_task)
-        ;   update_module_io(module_io_task)
         ;   update_module_cookie(module_cookie_task, ground)
+        ;   update_module_pred_cookie(module_pred_cookie_task, ground)
     ).
 :- mode seq_proc_task == seq_proc_task >> seq_proc_task.
 
-process_all_nonimported_procs(Task, !ModuleInfo, !IO) :-
-    process_all_nonimported_procs_update(Task, _, !ModuleInfo, !IO).
+process_all_nonimported_procs(Task, !ModuleInfo) :-
+    process_all_nonimported_procs_update(Task, _, !ModuleInfo).
 
-process_all_nonimported_procs_update(!Task, !ModuleInfo, !IO) :-
+process_all_nonimported_procs_update(!Task, !ModuleInfo) :-
     module_info_get_valid_predids(ValidPredIds, !ModuleInfo),
     (
         ( !.Task = update_proc(_)
@@ -294,14 +286,13 @@
         map.from_sorted_assoc_list(PredIdsInfos, PredMap),
         module_info_set_preds(PredMap, !ModuleInfo)
     ;
-        ( !.Task = update_proc_ids_io(_)
-        ; !.Task = update_module(_)
+        ( !.Task = update_module(_)
         ; !.Task = update_module_pred(_)
-        ; !.Task = update_module_io(_)
         ; !.Task = update_module_cookie(_, _)
+        ; !.Task = update_module_pred_cookie(_, _)
         ),
         seq_process_nonimported_procs_in_preds(ValidPredIds, !Task,
-            !ModuleInfo, !IO)
+            !ModuleInfo)
     ).
 
 %-----------------------------------------------------------------------------%
@@ -358,24 +349,24 @@
 
 :- pred seq_process_nonimported_procs_in_preds(list(pred_id)::in,
     update_proc_task::seq_proc_task, update_proc_task::out(seq_proc_task),
-    module_info::in, module_info::out, io::di, io::uo) is det.
+    module_info::in, module_info::out) is det.
 
-seq_process_nonimported_procs_in_preds([], !Task, !ModuleInfo, !IO).
+seq_process_nonimported_procs_in_preds([], !Task, !ModuleInfo).
 seq_process_nonimported_procs_in_preds([PredId | PredIds], !Task,
-        !ModuleInfo, !IO) :-
+        !ModuleInfo) :-
     module_info_get_preds(!.ModuleInfo, PredTable),
     map.lookup(PredTable, PredId, PredInfo),
     ProcIds = pred_info_non_imported_procids(PredInfo),
-    seq_process_nonimported_procs(PredId, ProcIds, !Task, !ModuleInfo, !IO),
-    seq_process_nonimported_procs_in_preds(PredIds, !Task, !ModuleInfo, !IO).
+    seq_process_nonimported_procs(PredId, ProcIds, !Task, !ModuleInfo),
+    seq_process_nonimported_procs_in_preds(PredIds, !Task, !ModuleInfo).
 
 :- pred seq_process_nonimported_procs(pred_id::in, list(proc_id)::in,
     update_proc_task::seq_proc_task, update_proc_task::out(seq_proc_task),
-    module_info::in, module_info::out, io::di, io::uo) is det.
+    module_info::in, module_info::out) is det.
 
-seq_process_nonimported_procs(_PredId, [], !Task, !ModuleInfo, !IO).
-seq_process_nonimported_procs(PredId, [ProcId | ProcIds], !Task, !ModuleInfo,
-        !IO) :-
+seq_process_nonimported_procs(_PredId, [], !Task, !ModuleInfo).
+seq_process_nonimported_procs(PredId, [ProcId | ProcIds], !Task,
+        !ModuleInfo) :-
     module_info_get_preds(!.ModuleInfo, Preds0),
     map.lookup(Preds0, PredId, Pred0),
     pred_info_get_procedures(Pred0, Procs0),
@@ -383,21 +374,19 @@
 
     PredProcId = proc(PredId, ProcId),
     (
-        !.Task = update_proc_ids_io(Closure),
-        Closure(!.ModuleInfo, PredProcId, Proc0, Proc, !IO)
-    ;
         !.Task = update_module(Closure),
         Closure(PredProcId, Proc0, Proc, !ModuleInfo)
     ;
         !.Task = update_module_pred(Closure),
         Closure(PredProcId, Pred0, Proc0, Proc, !ModuleInfo)
     ;
-        !.Task = update_module_io(Closure),
-        Closure(PredProcId, Proc0, Proc, !ModuleInfo, !IO)
-    ;
         !.Task = update_module_cookie(Closure, Cookie0),
         Closure(PredProcId, Proc0, Proc, !ModuleInfo, Cookie0, Cookie),
         !:Task = update_module_cookie(Closure, Cookie)
+    ;
+        !.Task = update_module_pred_cookie(Closure, Cookie0),
+        Closure(PredProcId, Pred0, Proc0, Proc, !ModuleInfo, Cookie0, Cookie),
+        !:Task = update_module_pred_cookie(Closure, Cookie)
     ),
 
     % If the pass changed the module_info, it may have changed the pred table
@@ -412,7 +401,7 @@
     map.det_update(Preds8, PredId, Pred, Preds),
     module_info_set_preds(Preds, !ModuleInfo),
 
-    seq_process_nonimported_procs(PredId, ProcIds, !Task, !ModuleInfo, !IO).
+    seq_process_nonimported_procs(PredId, ProcIds, !Task, !ModuleInfo).
 
 %-----------------------------------------------------------------------------%
 
Index: compiler/pd_util.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/pd_util.m,v
retrieving revision 1.76
diff -u -b -r1.76 pd_util.m
--- compiler/pd_util.m	5 Aug 2010 03:07:09 -0000	1.76
+++ compiler/pd_util.m	5 Aug 2010 04:10:51 -0000
@@ -448,8 +448,8 @@
             OpaqueArgs0),
         svmap.set(PredProcId, BranchInfo0, !ArgInfo),
 
-            % Look for opportunities for deforestation in
-            % the sub-branches of the top-level goal.
+        % Look for opportunities for deforestation in the sub-branches
+        % of the top-level goal.
         get_sub_branch_vars_goal(!.ArgInfo, GoalList,
             VarTypes, InstMap0, Vars, AllVars, !ModuleInfo),
         get_extra_info_headvars(HeadVars, 1, LeftVars0,
@@ -568,31 +568,37 @@
     get_branch_vars_goal_2(ModuleInfo, Goals, !.FoundBranch,
         VarTypes, InstMap, !LeftVars, !Vars).
 
-:- pred get_branch_instmap_deltas(hlds_goal::in,
-    list(instmap_delta)::out) is semidet.
+:- pred get_branch_instmap_deltas(hlds_goal::in, list(instmap_delta)::out)
+    is semidet.
 
-get_branch_instmap_deltas(Goal, [CondDelta, ThenDelta, ElseDelta]) :-
-    Goal = hlds_goal(if_then_else(_, Cond, Then, Else), _),
+get_branch_instmap_deltas(Goal, InstMapDeltas) :-
+    Goal = hlds_goal(GoalExpr, _),
+    (
+        GoalExpr = if_then_else(_, Cond, Then, Else),
     Cond = hlds_goal(_, CondInfo),
     Then = hlds_goal(_, ThenInfo),
     Else = hlds_goal(_, ElseInfo),
     CondDelta = goal_info_get_instmap_delta(CondInfo),
     ThenDelta = goal_info_get_instmap_delta(ThenInfo),
-    ElseDelta = goal_info_get_instmap_delta(ElseInfo).
-get_branch_instmap_deltas(hlds_goal(switch(_, _, Cases), _), InstMapDeltas) :-
+        ElseDelta = goal_info_get_instmap_delta(ElseInfo),
+        InstMapDeltas = [CondDelta, ThenDelta, ElseDelta]
+    ;
+        GoalExpr = switch(_, _, Cases),
     GetCaseInstMapDelta =
         (pred(Case::in, InstMapDelta::out) is det :-
             Case = case(_, _, hlds_goal(_, CaseInfo)),
             InstMapDelta = goal_info_get_instmap_delta(CaseInfo)
         ),
-    list.map(GetCaseInstMapDelta, Cases, InstMapDeltas).
-get_branch_instmap_deltas(hlds_goal(disj(Disjuncts), _), InstMapDeltas) :-
+        list.map(GetCaseInstMapDelta, Cases, InstMapDeltas)
+    ;
+        GoalExpr = disj(Disjuncts),
     GetDisjunctInstMapDelta =
         (pred(Disjunct::in, InstMapDelta::out) is det :-
             Disjunct = hlds_goal(_, DisjInfo),
             InstMapDelta = goal_info_get_instmap_delta(DisjInfo)
         ),
-    list.map(GetDisjunctInstMapDelta, Disjuncts, InstMapDeltas).
+        list.map(GetDisjunctInstMapDelta, Disjuncts, InstMapDeltas)
+    ).
 
     % Get the variables for which we can do unfolding if the goals to
     % the left supply the top-level functor. Eventually this should
Index: compiler/ssdebug.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/ssdebug.m,v
retrieving revision 1.31
diff -u -b -r1.31 ssdebug.m
--- compiler/ssdebug.m	11 Aug 2010 03:51:59 -0000	1.31
+++ compiler/ssdebug.m	11 Aug 2010 04:53:37 -0000
@@ -224,7 +224,7 @@
 ssdebug.transform_module(!ModuleInfo, !IO) :-
     ssdebug.first_pass(!ModuleInfo),
     process_all_nonimported_procs(update_module(ssdebug.process_proc),
-        !ModuleInfo, !IO).
+        !ModuleInfo).
 
 %-----------------------------------------------------------------------------%
 %
Index: compiler/structure_reuse.analysis.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/structure_reuse.analysis.m,v
retrieving revision 1.24
diff -u -b -r1.24 structure_reuse.analysis.m
--- compiler/structure_reuse.analysis.m	30 Jul 2010 05:16:16 -0000	1.24
+++ compiler/structure_reuse.analysis.m	5 Aug 2010 04:30:20 -0000
@@ -178,9 +178,8 @@
             maybe_write_string(VeryVerbose,
                 "% Annotating in use information...", !IO)
         ),
-        process_all_nonimported_procs(
-            update_proc(annotate_in_use_information),
-            !ModuleInfo, !IO),
+        process_all_nonimported_procs(update_proc(annotate_in_use_information),
+            !ModuleInfo),
         trace [io(!IO)] (
             maybe_write_string(VeryVerbose, "done.\n", !IO)
         ),
Index: compiler/structure_sharing.analysis.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/structure_sharing.analysis.m,v
retrieving revision 1.48
diff -u -b -r1.48 structure_sharing.analysis.m
--- compiler/structure_sharing.analysis.m	5 Aug 2010 03:07:09 -0000	1.48
+++ compiler/structure_sharing.analysis.m	5 Aug 2010 04:31:02 -0000
@@ -345,8 +345,7 @@
 
 annotate_liveness(!ModuleInfo, !IO) :-
     process_all_nonimported_procs(
-        update_module(simplify_and_detect_liveness_proc),
-        !ModuleInfo, !IO).
+        update_module(simplify_and_detect_liveness_proc), !ModuleInfo).
 
 :- pred simplify_and_detect_liveness_proc(pred_proc_id::in,
     proc_info::in, proc_info::out, module_info::in, module_info::out) is det.
cvs diff: Diffing compiler/notes
cvs diff: Diffing deep_profiler
cvs diff: Diffing deep_profiler/notes
cvs diff: Diffing doc
cvs diff: Diffing extras
cvs diff: Diffing extras/base64
cvs diff: Diffing extras/cgi
cvs diff: Diffing extras/complex_numbers
cvs diff: Diffing extras/complex_numbers/samples
cvs diff: Diffing extras/complex_numbers/tests
cvs diff: Diffing extras/concurrency
cvs diff: Diffing extras/curs
cvs diff: Diffing extras/curs/samples
cvs diff: Diffing extras/curses
cvs diff: Diffing extras/curses/sample
cvs diff: Diffing extras/dynamic_linking
cvs diff: Diffing extras/error
cvs diff: Diffing extras/fixed
cvs diff: Diffing extras/gator
cvs diff: Diffing extras/gator/generations
cvs diff: Diffing extras/gator/generations/1
cvs diff: Diffing extras/graphics
cvs diff: Diffing extras/graphics/easyx
cvs diff: Diffing extras/graphics/easyx/samples
cvs diff: Diffing extras/graphics/mercury_allegro
cvs diff: Diffing extras/graphics/mercury_allegro/examples
cvs diff: Diffing extras/graphics/mercury_allegro/samples
cvs diff: Diffing extras/graphics/mercury_allegro/samples/demo
cvs diff: Diffing extras/graphics/mercury_allegro/samples/mandel
cvs diff: Diffing extras/graphics/mercury_allegro/samples/pendulum2
cvs diff: Diffing extras/graphics/mercury_allegro/samples/speed
cvs diff: Diffing extras/graphics/mercury_glut
cvs diff: Diffing extras/graphics/mercury_opengl
cvs diff: Diffing extras/graphics/mercury_tcltk
cvs diff: Diffing extras/graphics/samples
cvs diff: Diffing extras/graphics/samples/calc
cvs diff: Diffing extras/graphics/samples/gears
cvs diff: Diffing extras/graphics/samples/maze
cvs diff: Diffing extras/graphics/samples/pent
cvs diff: Diffing extras/lazy_evaluation
cvs diff: Diffing extras/lex
cvs diff: Diffing extras/lex/samples
cvs diff: Diffing extras/lex/tests
cvs diff: Diffing extras/log4m
cvs diff: Diffing extras/logged_output
cvs diff: Diffing extras/monte
cvs diff: Diffing extras/moose
cvs diff: Diffing extras/moose/samples
cvs diff: Diffing extras/moose/tests
cvs diff: Diffing extras/mopenssl
cvs diff: Diffing extras/morphine
cvs diff: Diffing extras/morphine/non-regression-tests
cvs diff: Diffing extras/morphine/scripts
cvs diff: Diffing extras/morphine/source
cvs diff: Diffing extras/net
cvs diff: Diffing extras/odbc
cvs diff: Diffing extras/posix
cvs diff: Diffing extras/posix/samples
cvs diff: Diffing extras/quickcheck
cvs diff: Diffing extras/quickcheck/tutes
cvs diff: Diffing extras/references
cvs diff: Diffing extras/references/samples
cvs diff: Diffing extras/references/tests
cvs diff: Diffing extras/solver_types
cvs diff: Diffing extras/solver_types/library
cvs diff: Diffing extras/trailed_update
cvs diff: Diffing extras/trailed_update/samples
cvs diff: Diffing extras/trailed_update/tests
cvs diff: Diffing extras/windows_installer_generator
cvs diff: Diffing extras/windows_installer_generator/sample
cvs diff: Diffing extras/windows_installer_generator/sample/images
cvs diff: Diffing extras/xml
cvs diff: Diffing extras/xml/samples
cvs diff: Diffing extras/xml_stylesheets
cvs diff: Diffing java
cvs diff: Diffing java/runtime
cvs diff: Diffing library
cvs diff: Diffing mdbcomp
cvs diff: Diffing profiler
cvs diff: Diffing robdd
cvs diff: Diffing runtime
cvs diff: Diffing runtime/GETOPT
cvs diff: Diffing runtime/machdeps
cvs diff: Diffing samples
cvs diff: Diffing samples/c_interface
cvs diff: Diffing samples/c_interface/c_calls_mercury
cvs diff: Diffing samples/c_interface/cplusplus_calls_mercury
cvs diff: Diffing samples/c_interface/mercury_calls_c
cvs diff: Diffing samples/c_interface/mercury_calls_cplusplus
cvs diff: Diffing samples/c_interface/mercury_calls_fortran
cvs diff: Diffing samples/c_interface/simpler_c_calls_mercury
cvs diff: Diffing samples/c_interface/simpler_cplusplus_calls_mercury
cvs diff: Diffing samples/c_interface/standalone_c
cvs diff: Diffing samples/diff
cvs diff: Diffing samples/java_interface
cvs diff: Diffing samples/java_interface/java_calls_mercury
cvs diff: Diffing samples/java_interface/mercury_calls_java
cvs diff: Diffing samples/muz
cvs diff: Diffing samples/rot13
cvs diff: Diffing samples/solutions
cvs diff: Diffing samples/solver_types
cvs diff: Diffing samples/tests
cvs diff: Diffing samples/tests/c_interface
cvs diff: Diffing samples/tests/c_interface/c_calls_mercury
cvs diff: Diffing samples/tests/c_interface/cplusplus_calls_mercury
cvs diff: Diffing samples/tests/c_interface/mercury_calls_c
cvs diff: Diffing samples/tests/c_interface/mercury_calls_cplusplus
cvs diff: Diffing samples/tests/c_interface/mercury_calls_fortran
cvs diff: Diffing samples/tests/c_interface/simpler_c_calls_mercury
cvs diff: Diffing samples/tests/c_interface/simpler_cplusplus_calls_mercury
cvs diff: Diffing samples/tests/diff
cvs diff: Diffing samples/tests/muz
cvs diff: Diffing samples/tests/rot13
cvs diff: Diffing samples/tests/solutions
cvs diff: Diffing samples/tests/toplevel
cvs diff: Diffing scripts
cvs diff: Diffing slice
cvs diff: Diffing ssdb
cvs diff: Diffing tests
cvs diff: Diffing tests/analysis
cvs diff: Diffing tests/analysis/ctgc
cvs diff: Diffing tests/analysis/excp
cvs diff: Diffing tests/analysis/ext
cvs diff: Diffing tests/analysis/sharing
cvs diff: Diffing tests/analysis/table
cvs diff: Diffing tests/analysis/trail
cvs diff: Diffing tests/analysis/unused_args
cvs diff: Diffing tests/benchmarks
cvs diff: Diffing tests/debugger
cvs diff: Diffing tests/debugger/declarative
cvs diff: Diffing tests/dppd
cvs diff: Diffing tests/general
cvs diff: Diffing tests/general/accumulator
cvs diff: Diffing tests/general/string_format
cvs diff: Diffing tests/general/structure_reuse
cvs diff: Diffing tests/grade_subdirs
cvs diff: Diffing tests/hard_coded
cvs diff: Diffing tests/hard_coded/exceptions
cvs diff: Diffing tests/hard_coded/purity
cvs diff: Diffing tests/hard_coded/sub-modules
cvs diff: Diffing tests/hard_coded/typeclasses
cvs diff: Diffing tests/invalid
cvs diff: Diffing tests/invalid/purity
cvs diff: Diffing tests/misc_tests
cvs diff: Diffing tests/mmc_make
cvs diff: Diffing tests/mmc_make/lib
cvs diff: Diffing tests/par_conj
cvs diff: Diffing tests/recompilation
cvs diff: Diffing tests/stm
cvs diff: Diffing tests/stm/orig
cvs diff: Diffing tests/stm/orig/stm-compiler
cvs diff: Diffing tests/stm/orig/stm-compiler/test1
cvs diff: Diffing tests/stm/orig/stm-compiler/test10
cvs diff: Diffing tests/stm/orig/stm-compiler/test2
cvs diff: Diffing tests/stm/orig/stm-compiler/test3
cvs diff: Diffing tests/stm/orig/stm-compiler/test4
cvs diff: Diffing tests/stm/orig/stm-compiler/test5
cvs diff: Diffing tests/stm/orig/stm-compiler/test6
cvs diff: Diffing tests/stm/orig/stm-compiler/test7
cvs diff: Diffing tests/stm/orig/stm-compiler/test8
cvs diff: Diffing tests/stm/orig/stm-compiler/test9
cvs diff: Diffing tests/stm/orig/stm-compiler-par
cvs diff: Diffing tests/stm/orig/stm-compiler-par/bm1
cvs diff: Diffing tests/stm/orig/stm-compiler-par/bm2
cvs diff: Diffing tests/stm/orig/stm-compiler-par/stmqueue
cvs diff: Diffing tests/stm/orig/stm-compiler-par/test1
cvs diff: Diffing tests/stm/orig/stm-compiler-par/test10
cvs diff: Diffing tests/stm/orig/stm-compiler-par/test11
cvs diff: Diffing tests/stm/orig/stm-compiler-par/test2
cvs diff: Diffing tests/stm/orig/stm-compiler-par/test3
cvs diff: Diffing tests/stm/orig/stm-compiler-par/test4
cvs diff: Diffing tests/stm/orig/stm-compiler-par/test5
cvs diff: Diffing tests/stm/orig/stm-compiler-par/test6
cvs diff: Diffing tests/stm/orig/stm-compiler-par/test7
cvs diff: Diffing tests/stm/orig/stm-compiler-par/test8
cvs diff: Diffing tests/stm/orig/stm-compiler-par/test9
cvs diff: Diffing tests/stm/orig/stm-compiler-par-asm_fast
cvs diff: Diffing tests/stm/orig/stm-compiler-par-asm_fast/test1
cvs diff: Diffing tests/stm/orig/stm-compiler-par-asm_fast/test2
cvs diff: Diffing tests/stm/orig/stm-compiler-par-asm_fast/test3
cvs diff: Diffing tests/stm/orig/stm-compiler-par-asm_fast/test4
cvs diff: Diffing tests/stm/orig/stm-compiler-par-asm_fast/test5
cvs diff: Diffing tests/stm/orig/stm-compiler-par-asm_fast/test6
cvs diff: Diffing tests/stm/orig/stm-compiler-par-asm_fast/test7
cvs diff: Diffing tests/stm/orig/stm-compiler-par-asm_fast/test8
cvs diff: Diffing tests/stm/orig/stm-compiler-par-asm_fast/test9
cvs diff: Diffing tests/tabling
cvs diff: Diffing tests/term
cvs diff: Diffing tests/trailing
cvs diff: Diffing tests/valid
cvs diff: Diffing tests/warnings
Index: tests/warnings/arg_order_rearrangment.exp
===================================================================
RCS file: /home/mercury/mercury1/repository/tests/warnings/arg_order_rearrangment.exp,v
retrieving revision 1.5
diff -u -b -r1.5 arg_order_rearrangment.exp
--- tests/warnings/arg_order_rearrangment.exp	7 Sep 2006 05:51:46 -0000	1.5
+++ tests/warnings/arg_order_rearrangment.exp	5 Aug 2010 12:32:45 -0000
@@ -1,9 +1,9 @@
-arg_order_rearrangment.m:008: In predicate `arg_order_rearrangment.r'/2
+arg_order_rearrangment.m:008: In predicate `arg_order_rearrangment.r'/2:
 arg_order_rearrangment.m:014:   warning: the call to predicate
 arg_order_rearrangment.m:014:     `arg_order_rearrangment.app'/3 has had the
 arg_order_rearrangment.m:014:     location of the variables `V_7' and `R0'
 arg_order_rearrangment.m:014:     swapped to allow accumulator introduction.
-arg_order_rearrangment.m:008:   Please ensure that these argument
-arg_order_rearrangment.m:008:     rearrangements do not introduce performance
-arg_order_rearrangment.m:008:     problems. These warnings can be suppressed by
+arg_order_rearrangment.m:008:   Please ensure that this argument rearrangement
+arg_order_rearrangment.m:008:   does not introduce performance problems.
+arg_order_rearrangment.m:008:   These warnings can be suppressed by
 arg_order_rearrangment.m:008:     `--inhibit-accumulator-warnings'.
Index: tests/warnings/arg_order_rearrangment.exp2
===================================================================
RCS file: /home/mercury/mercury1/repository/tests/warnings/arg_order_rearrangment.exp2,v
retrieving revision 1.2
diff -u -b -r1.2 arg_order_rearrangment.exp2
--- tests/warnings/arg_order_rearrangment.exp2	17 Jan 2003 05:57:19 -0000	1.2
+++ tests/warnings/arg_order_rearrangment.exp2	5 Aug 2010 08:59:06 -0000
@@ -1,11 +1 @@
-arg_order_rearrangment.m:008: In predicate `arg_order_rearrangment.r/2'
-arg_order_rearrangment.m:014:   warning: the call to predicate
-arg_order_rearrangment.m:014:     `arg_order_rearrangment.app/3' has had the
-arg_order_rearrangment.m:014:     location of the variables `V_7' and `R0'
-arg_order_rearrangment.m:014:     swapped to allow accumulator introduction.
-arg_order_rearrangment.m:008:   Please ensure that these argument
-arg_order_rearrangment.m:008:     rearrangements do not introduce performance
-arg_order_rearrangment.m:008:     problems. These warnings can be suppressed by
-arg_order_rearrangment.m:008:     `--inhibit-accumulator-warnings'.
-arg_order_rearrangment.m: In function `r':
-arg_order_rearrangment.m:0: note: can't optimize tail call: callee arg size > caller arg size
+OBSOLETE
cvs diff: Diffing tools
cvs diff: Diffing trace
cvs diff: Diffing util
cvs diff: Diffing vim
cvs diff: Diffing vim/after
cvs diff: Diffing vim/ftplugin
cvs diff: Diffing vim/syntax
--------------------------------------------------------------------------
mercury-reviews mailing list
Post messages to:       mercury-reviews at csse.unimelb.edu.au
Administrative Queries: owner-mercury-reviews at csse.unimelb.edu.au
Subscriptions:          mercury-reviews-request at csse.unimelb.edu.au
--------------------------------------------------------------------------



More information about the reviews mailing list