[m-rev.] diff: more minor improvements

Zoltan Somogyi zs at csse.unimelb.edu.au
Thu Jul 16 17:26:16 AEST 2009


compiler/add_pragma.m:
compiler/check_typeclass.m:
compiler/delay_partial_inst.m:
compiler/deep_profiling.m:
compiler/hhf.m:
compiler/hlds_out.m:
compiler/simplify.m:
	Minor cleanups.

compiler/unused_args.m:
	Add support for looking at what this pass does in detail.

compiler/hlds_goal.m:
compiler/hlds_pred.m:
	Number the arguments of the most frequently used structures,
	to ensure that we don't accidentally overstep Boehm gc's important
	boundaries (8 words, 16 words). Unfortunately, for proc_infos,
	we already have.

deep_profiler/display_report.m:
	Generate more readable output for coverage profiling data.

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/include
cvs diff: Diffing boehm_gc/include/private
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/src/atomic_ops/sysdeps/gcc
cvs diff: Diffing boehm_gc/libatomic_ops-1.2/src/atomic_ops/sysdeps/hpc
cvs diff: Diffing boehm_gc/libatomic_ops-1.2/src/atomic_ops/sysdeps/ibmc
cvs diff: Diffing boehm_gc/libatomic_ops-1.2/src/atomic_ops/sysdeps/icc
cvs diff: Diffing boehm_gc/libatomic_ops-1.2/src/atomic_ops/sysdeps/msftc
cvs diff: Diffing boehm_gc/libatomic_ops-1.2/src/atomic_ops/sysdeps/sunc
cvs diff: Diffing boehm_gc/libatomic_ops-1.2/tests
cvs diff: Diffing boehm_gc/tests
cvs diff: Diffing boehm_gc/windows-untested
cvs diff: Diffing boehm_gc/windows-untested/vc60
cvs diff: Diffing boehm_gc/windows-untested/vc70
cvs diff: Diffing boehm_gc/windows-untested/vc71
cvs diff: Diffing browser
cvs diff: Diffing bytecode
cvs diff: Diffing compiler
Index: compiler/add_pragma.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/add_pragma.m,v
retrieving revision 1.92
diff -u -b -r1.92 add_pragma.m
--- compiler/add_pragma.m	11 Jun 2009 08:28:25 -0000	1.92
+++ compiler/add_pragma.m	11 Jul 2009 03:33:03 -0000
@@ -468,20 +468,20 @@
             Modes, !.ModuleInfo, ProcId)
     ->
         map.lookup(Procs, ProcId, ProcInfo),
-        proc_info_get_declared_determinism(ProcInfo, MaybeDet),
+        proc_info_get_declared_determinism(ProcInfo, MaybeDetism),
         % We cannot catch those multi or nondet procedures that don't have
         % a determinism declaration until after determinism analysis.
         (
-            MaybeDet = yes(Det),
-            ( Det = detism_non
-            ; Det = detism_multi
+            MaybeDetism = yes(Detism),
+            ( Detism = detism_non
+            ; Detism = detism_multi
             )
         ->
             Pieces = [words("Error: "),
                 fixed("`:- pragma foreign_export' declaration"),
                 words("for a procedure that has"),
                 words("a declared determinism of"),
-                fixed(hlds_out.determinism_to_string(Det) ++ ".")
+                fixed(hlds_out.determinism_to_string(Detism) ++ ".")
             ],
             Msg = simple_msg(Context, [always(Pieces)]),
             Spec = error_spec(severity_error, phase_parse_tree_to_hlds,
@@ -1952,7 +1952,7 @@
         )
     ;
         % XXX This happens in `.trans_opt' files sometimes --
-        % so just ignore it
+        % so just ignore it.
         true
         %   undefined_pred_or_func_error(
         %        SymName, Arity, Context,
@@ -2009,7 +2009,7 @@
         )
     ;
         % XXX This happens in `.trans_opt' files sometimes --
-        % so just ignore it
+        % so just ignore it.
         true
         %   undefined_pred_or_func_error(SymName, Arity, Context,
         %       "`:- pragma structure_sharing' declaration",
@@ -2124,7 +2124,7 @@
         )
     ;
         % XXX This happens in `.trans_opt' files sometimes --
-        % so just ignore it
+        % so just ignore it.
         true
         %   undefined_pred_or_func_error(SymName, Arity, Context,
         %       "`:- pragma termination_info' declaration",
@@ -3777,8 +3777,8 @@
     ;
         HOInstInfoA = higher_order(PredInstInfoA),
         HOInstInfoB = higher_order(PredInstInfoB),
-        PredInstInfoA = pred_inst_info(PredOrFunc, ModesA, Det),
-        PredInstInfoB = pred_inst_info(PredOrFunc, ModesB, Det),
+        PredInstInfoA = pred_inst_info(PredOrFunc, ModesA, Detism),
+        PredInstInfoB = pred_inst_info(PredOrFunc, ModesB, Detism),
         mode_list_matches_with_renaming(ModesA, ModesB, Renaming, ModuleInfo)
     ).
 
Index: compiler/check_typeclass.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/check_typeclass.m,v
retrieving revision 1.123
diff -u -b -r1.123 check_typeclass.m
--- compiler/check_typeclass.m	5 Apr 2009 12:16:47 -0000	1.123
+++ compiler/check_typeclass.m	11 Jul 2009 03:34:46 -0000
@@ -1540,17 +1540,16 @@
 
 check_pred_constraints(PredId, !ModuleInfo, !Specs) :-
     module_info_pred_info(!.ModuleInfo, PredId, PredInfo),
-    (
         pred_info_get_import_status(PredInfo, ImportStatus),
-        needs_ambiguity_check(ImportStatus) = no
-    ->
-        true
+    NeedsAmbiguityCheck = needs_ambiguity_check(ImportStatus),
+    (
+        NeedsAmbiguityCheck = no
     ;
+        NeedsAmbiguityCheck = yes,
         trace [io(!IO)] (
             write_pred_progress_message("% Checking typeclass constraints on ",
                 PredId, !.ModuleInfo, !IO)
         ),
-
         check_pred_type_ambiguities(PredInfo, !ModuleInfo, !Specs),
         check_constraint_quant(PredInfo, !ModuleInfo, !Specs)
     ).
Index: compiler/ctgc.datastruct.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/ctgc.datastruct.m,v
retrieving revision 1.14
diff -u -b -r1.14 ctgc.datastruct.m
Index: compiler/deep_profiling.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/deep_profiling.m,v
retrieving revision 1.97
diff -u -b -r1.97 deep_profiling.m
--- compiler/deep_profiling.m	11 Jun 2009 07:00:07 -0000	1.97
+++ compiler/deep_profiling.m	16 Jul 2009 03:03:44 -0000
@@ -146,8 +146,7 @@
     ->
         proc_info_set_goal(Goal, ProcInfo0, ProcInfo1),
         figure_out_rec_call_numbers(Goal, 0, _N, [], TailCallSites),
-        OrigDeepRecInfo = yes(deep_recursion_info(
-            outer_proc(ClonePredProcId),
+        OrigDeepRecInfo = yes(deep_recursion_info(outer_proc(ClonePredProcId),
             [visible_scc_data(PredProcId, ClonePredProcId, TailCallSites)])),
         make_deep_original_body(ProcInfo0, !.ModuleInfo, DeepOriginalBody),
         OrigDeepProfileInfo = deep_profile_proc_info(OrigDeepRecInfo, no,
@@ -158,8 +157,8 @@
             DeepOriginalBody),
         proc_info_set_maybe_deep_profile_info(yes(OrigDeepProfileInfo),
             ProcInfo1, ProcInfo),
-        proc_info_set_maybe_deep_profile_info(
-            yes(CloneDeepProfileInfo), ProcInfo1, CloneProcInfo),
+        proc_info_set_maybe_deep_profile_info(yes(CloneDeepProfileInfo),
+            ProcInfo1, CloneProcInfo),
         map.det_update(ProcTable0, ProcId, ProcInfo, ProcTable1),
         map.det_insert(ProcTable1, CloneProcId, CloneProcInfo, ProcTable),
         pred_info_set_procedures(ProcTable, PredInfo0, PredInfo),
@@ -387,10 +386,12 @@
     Goal = hlds_goal(GoalExpr, GoalInfo),
     (
         GoalExpr = call_foreign_proc(Attrs, _, _, _, _, _, _),
-        ( get_may_call_mercury(Attrs) = proc_may_call_mercury ->
+        MayCallMercury = get_may_call_mercury(Attrs),
+        (
+            MayCallMercury = proc_may_call_mercury,
             !:N = !.N + 1
         ;
-            true
+            MayCallMercury = proc_will_not_call_mercury
         )
     ;
         GoalExpr = plain_call(_, _, _, BuiltinState, _, _),
@@ -519,17 +520,17 @@
             MaybeDeepRecInfo = yes(RecInfo),
             RecInfo ^ role = inner_proc(_)
         ->
-            transform_inner_proc(ModuleInfo, PredProcId, !ProcInfo),
+            deep_prof_transform_inner_proc(ModuleInfo, PredProcId, !ProcInfo),
             MaybeDeepLayoutInfo = no
         ;
-            transform_normal_proc(ModuleInfo, PredProcId, !ProcInfo,
+            deep_prof_transform_normal_proc(ModuleInfo, PredProcId, !ProcInfo,
                 DeepLayoutInfo),
             MaybeDeepLayoutInfo = yes(DeepLayoutInfo)
         )
     ;
         MaybeDeepInfo = no,
         make_deep_original_body(!.ProcInfo, ModuleInfo, OrigBody),
-        transform_normal_proc(ModuleInfo, PredProcId, !ProcInfo,
+        deep_prof_transform_normal_proc(ModuleInfo, PredProcId, !ProcInfo,
             DeepLayoutInfo),
         MaybeDeepLayoutInfo = yes(DeepLayoutInfo),
         MaybeDeepRecInfo = no
@@ -587,10 +588,11 @@
 
     % Transfrom a procedure.
     %
-:- pred transform_normal_proc(module_info::in, pred_proc_id::in,
+:- pred deep_prof_transform_normal_proc(module_info::in, pred_proc_id::in,
     proc_info::in, proc_info::out, hlds_deep_layout::out) is det.
 
-transform_normal_proc(ModuleInfo, PredProcId, !ProcInfo, DeepLayoutInfo) :-
+deep_prof_transform_normal_proc(ModuleInfo, PredProcId, !ProcInfo,
+        DeepLayoutInfo) :-
     module_info_get_globals(ModuleInfo, Globals),
     proc_info_get_goal(!.ProcInfo, Goal0),
     Goal0 = hlds_goal(_, GoalInfo0),
@@ -623,9 +625,8 @@
             DoCoverageProfiling),
         (
             DoCoverageProfiling = yes,
-            coverage_prof_transform_goal(ModuleInfo, PredProcId,
-                MaybeRecInfo, Goal1, TransformedGoal, !VarInfo,
-                CoveragePoints)
+            coverage_prof_transform_goal(ModuleInfo, PredProcId, MaybeRecInfo,
+                Goal1, TransformedGoal, !VarInfo, CoveragePoints)
         ;
             DoCoverageProfiling = no,
             CoveragePoints = [],
@@ -686,7 +687,6 @@
     proc_info_set_goal(Goal, !ProcInfo),
     DeepLayoutInfo = hlds_deep_layout(ProcStatic, ExcpVars).
 
-
     % Wrap the procedure body in the deep profiling port goals.
     %
     % When modifing this transformation be sure to modify original_root/3 in
@@ -728,7 +728,7 @@
     ]),
     Goal = hlds_goal(GoalExpr, GoalInfo).
 
-    % Wrap the goal for a semidet procedure,
+    % Wrap the goal for a semidet procedure.
     %
     % If changing this transformation be sure to change original_root/3 in
     % deep_profiler/program_represenentation_utils.m.
@@ -880,17 +880,16 @@
     % XXX: Inner procedures have no coverage profiling transformation done to
     % them yet.  This is because they are currently broken, and hence disabled.
     %
-:- pred transform_inner_proc(module_info::in, pred_proc_id::in,
+:- pred deep_prof_transform_inner_proc(module_info::in, pred_proc_id::in,
     proc_info::in, proc_info::out) is det.
 
-transform_inner_proc(ModuleInfo, PredProcId, !ProcInfo) :-
+deep_prof_transform_inner_proc(ModuleInfo, PredProcId, !ProcInfo) :-
     proc_info_get_goal(!.ProcInfo, Goal0),
     Goal0 = hlds_goal(_, GoalInfo0),
     proc_info_get_varset(!.ProcInfo, VarSet0),
     proc_info_get_vartypes(!.ProcInfo, VarTypes0),
     VarInfo0 = deep_prof_var_info(VarSet0, VarTypes0),
-    generate_var("MiddleCSD", c_pointer_type, MiddleCSD, VarInfo0,
-        VarInfo1),
+    generate_var("MiddleCSD", c_pointer_type, MiddleCSD, VarInfo0, VarInfo1),
 
     Context = goal_info_get_context(GoalInfo0),
     FileName = term.context_file(Context),
@@ -898,8 +897,7 @@
     proc_info_get_maybe_deep_profile_info(!.ProcInfo, MaybeDeepProfInfo),
     extract_deep_rec_info(MaybeDeepProfInfo, MaybeRecInfo),
     DeepInfo0 = deep_info(ModuleInfo, PredProcId, MiddleCSD,
-        counter.init(0), [], VarInfo1,
-        FileName, MaybeRecInfo),
+        counter.init(0), [], VarInfo1, FileName, MaybeRecInfo),
 
     deep_prof_transform_goal(empty_goal_path, Goal0, TransformedGoal, _,
         DeepInfo0, DeepInfo),
@@ -2984,8 +2982,8 @@
     counter.allocate(CPIndex, CPIndexCounter0, CPIndexCounter),
     map.det_insert(CoveragePointInfos0, CPIndex, CoveragePointInfo,
         CoveragePointInfos),
-    !:CoverageInfo = !.CoverageInfo ^ ci_coverage_points := CoveragePointInfos,
-    !:CoverageInfo = !.CoverageInfo ^ ci_cp_index_counter := CPIndexCounter,
+    !CoverageInfo ^ ci_coverage_points := CoveragePointInfos,
+    !CoverageInfo ^ ci_cp_index_counter := CPIndexCounter,
 
     % Build unifications for the coverage point index and the proc static.
 
Index: compiler/delay_partial_inst.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/delay_partial_inst.m,v
retrieving revision 1.13
diff -u -b -r1.13 delay_partial_inst.m
--- compiler/delay_partial_inst.m	11 Jun 2009 07:00:08 -0000	1.13
+++ compiler/delay_partial_inst.m	11 Jul 2009 03:36:38 -0000
@@ -234,13 +234,16 @@
     delay_partial_inst_in_goal(InstMap0, Goal0, Goal, map.init, _ConstructMap,
         DelayInfo0, DelayInfo),
 
-    (if DelayInfo ^ dpi_changed = yes then
+    Changed = DelayInfo ^ dpi_changed,
+    (
+        Changed = yes,
         proc_info_set_goal(Goal, !ProcInfo),
         proc_info_set_varset(DelayInfo ^ dpi_varset, !ProcInfo),
         proc_info_set_vartypes(DelayInfo ^ dpi_vartypes, !ProcInfo),
         requantify_proc(!ProcInfo),
         MaybeProcInfo = yes(!.ProcInfo)
-    else
+    ;
+        Changed = no,
         MaybeProcInfo = no
     ).
 
Index: compiler/hhf.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/hhf.m,v
retrieving revision 1.37
diff -u -b -r1.37 hhf.m
--- compiler/hhf.m	12 Jun 2009 04:06:19 -0000	1.37
+++ compiler/hhf.m	11 Jul 2009 03:38:20 -0000
@@ -90,12 +90,12 @@
         pred_info_set_clauses_info(ClausesInfo, PredInfo0, PredInfo1),
         some [!IG] (
             pred_info_get_inst_graph_info(PredInfo1, !:IG),
-            !:IG = !.IG ^ implementation_inst_graph := ImplementationInstGraph,
+            !IG ^ implementation_inst_graph := ImplementationInstGraph,
 
             % AAA only for non-imported preds with no mode decls.
             clauses_info_get_headvar_list(ClausesInfo, HeadVars),
             clauses_info_get_varset(ClausesInfo, VarSet),
-            !:IG = !.IG ^ interface_inst_graph := ImplementationInstGraph,
+            !IG ^ interface_inst_graph := ImplementationInstGraph,
             solutions(
                 (pred(V::out) is nondet :-
                     list.member(V0, HeadVars),
Index: compiler/hlds_goal.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/hlds_goal.m,v
retrieving revision 1.207
diff -u -b -r1.207 hlds_goal.m
--- compiler/hlds_goal.m	11 Jun 2009 07:00:09 -0000	1.207
+++ compiler/hlds_goal.m	11 Jul 2009 03:39:13 -0000
@@ -1828,7 +1828,7 @@
                 % The overall determinism of the goal (computed during
                 % determinism analysis). Since the determinism analysis problem
                 % is is undecidable, this may be a conservative approximation.
-                gi_determinism      :: determinism,
+/*  1 */        gi_determinism      :: determinism,
 
                 % The change in insts over this goal (computed during mode
                 % analysis). Since the unreachability problem is undecidable,
@@ -1848,30 +1848,30 @@
                 %
                 % Normally the instmap_delta will list only the nonlocal
                 % variables of the goal.
-                gi_instmap_delta    :: instmap_delta,
+/*  2 */        gi_instmap_delta    :: instmap_delta,
 
                 % The non-local vars in the goal, i.e. the variables that
                 % occur both inside and outside of the goal (computed by
                 % quantification.m). In some circumstances, this may be a
                 % conservative approximation: it may be a superset of the
                 % real non-locals.
-                gi_nonlocals        :: set(prog_var),
+/*  3 */        gi_nonlocals        :: set(prog_var),
 
-                gi_purity           :: purity,
+/*  4 */        gi_purity           :: purity,
 
                 % The set of compiler-defined "features" of this goal,
                 % which optimisers may wish to know about.
-                gi_features         :: set(goal_feature),
+/*  5 */        gi_features         :: set(goal_feature),
 
                 % The path to this goal from the root.
-                gi_goal_path        :: goal_path,
+/*  6 */        gi_goal_path        :: goal_path,
 
-                gi_code_gen_info    :: hlds_goal_code_gen_info,
+/*  7 */        gi_code_gen_info    :: hlds_goal_code_gen_info,
 
                 % Extra information about the goal that doesn't fit in an
                 % eight-word cell. Mostly used for information used by
                 % various optional analysis passes, e.g closure analysis.
-                gi_extra            :: hlds_goal_extra_info
+/*  8 */        gi_extra            :: hlds_goal_extra_info
             ).
 
 :- type hlds_goal_extra_info
Index: compiler/hlds_out.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/hlds_out.m,v
retrieving revision 1.465
diff -u -b -r1.465 hlds_out.m
--- compiler/hlds_out.m	11 Jun 2009 07:00:10 -0000	1.465
+++ compiler/hlds_out.m	11 Jul 2009 04:04:47 -0000
@@ -415,8 +415,7 @@
         PredOrFunc = pred_info_is_pred_or_func(PredInfo),
         pred_info_get_origin(PredInfo, Origin),
         (
-            Origin = origin_special_pred(SpecialId - TypeCtor)
-        ->
+            Origin = origin_special_pred(SpecialId - TypeCtor),
             special_pred_description(SpecialId, Descr),
             TypeCtor = type_ctor(_TypeSymName, TypeArity),
             ( TypeArity = 0 ->
@@ -426,9 +425,7 @@
             ),
             Str = Descr ++ ForStr ++ type_name_to_string(TypeCtor)
         ;
-            pred_info_get_origin(PredInfo, Origin),
-            Origin = origin_instance_method(MethodName, MethodConstraints)
-        ->
+            Origin = origin_instance_method(MethodName, MethodConstraints),
             MethodConstraints = instance_method_constraints(ClassId,
                 InstanceTypes, _, _),
             MethodStr = simple_call_id_to_string(PredOrFunc, MethodName,
@@ -441,13 +438,20 @@
                 " for `", ClassStr, "(", TypeStrs, ")'"
             ])
         ;
-            pred_info_get_goal_type(PredInfo, goal_type_promise(PromiseType))
-        ->
+            ( Origin = origin_transformed(_, _, _)
+            ; Origin = origin_assertion(_, _)
+            ; Origin = origin_created(_)
+            ; Origin = origin_lambda(_, _, _)
+            ; Origin = origin_user(_)
+            ),
+            pred_info_get_goal_type(PredInfo, GoalType),
+            ( GoalType = goal_type_promise(PromiseType) ->
             Str = "`" ++ prog_out.promise_to_string(PromiseType)
                 ++ "' declaration"
         ;
-            Str = simple_call_id_to_string(PredOrFunc, qualified(Module, Name),
-                Arity)
+                Str = simple_call_id_to_string(PredOrFunc,
+                    qualified(Module, Name), Arity)
+            )
         )
     ;
         % The predicate has been deleted, so we print what we can.
Index: compiler/hlds_pred.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/hlds_pred.m,v
retrieving revision 1.250
diff -u -b -r1.250 hlds_pred.m
--- compiler/hlds_pred.m	29 Apr 2009 03:38:12 -0000	1.250
+++ compiler/hlds_pred.m	11 Jul 2009 03:58:00 -0000
@@ -1014,49 +1014,49 @@
 :- type pred_info
     --->    pred_info(
                 % Module in which pred occurs.
-                module_name         :: module_name,
+/*  1 */        module_name         :: module_name,
 
                 % Predicate name.
-                name                :: string,
+/*  2 */        name                :: string,
 
                 % The arity of the pred (*not* counting any inserted type_info
                 % arguments).
-                orig_arity          :: arity,
+/*  3 */        orig_arity          :: arity,
 
                 % Whether this "predicate" is really a predicate or a function.
-                is_pred_or_func     :: pred_or_func,
+/*  4 */        is_pred_or_func     :: pred_or_func,
 
                 % Where did the predicate come from.
-                pred_origin         :: pred_origin,
+/*  5 */        pred_origin         :: pred_origin,
 
-                import_status       :: import_status,
+/*  6 */        import_status       :: import_status,
 
                 % Various boolean flags.
-                markers             :: pred_markers,
+/*  7 */        markers             :: pred_markers,
 
                 % Argument types.
-                arg_types           :: list(mer_type),
+/*  8 */        arg_types           :: list(mer_type),
 
                 % Names of type vars in the predicate's type declaration.
-                decl_typevarset     :: tvarset,
+/*  9 */        decl_typevarset     :: tvarset,
 
                 % Names of type vars in the predicate's type declaration
                 % or in the variable type assignments.
-                typevarset          :: tvarset,
+/* 10 */        typevarset          :: tvarset,
 
                 % The set of existentially quantified type variables in the
                 % predicate's type declaration.
-                exist_quant_tvars   :: existq_tvars,
+/* 11 */        exist_quant_tvars   :: existq_tvars,
 
                 % The class constraints on the type variables in the
                 % predicate's type declaration.
-                class_context       :: prog_constraints,
+/* 12 */        class_context       :: prog_constraints,
 
-                clauses_info        :: clauses_info,
+/* 13 */        clauses_info        :: clauses_info,
 
-                procedures          :: proc_table,
+/* 14 */        procedures          :: proc_table,
 
-                pred_sub_info       :: pred_sub_info
+/* 15 */        pred_sub_info       :: pred_sub_info
 
                 % If you are adding any new fields, please try to ensure
                 % that the number of fields doesn't cross a threshold that
@@ -2196,45 +2196,45 @@
     --->    proc_info(
                 % The context of the `:- mode' decl (or the context of the
                 % first clause, if there was no mode declaration).
-                proc_context                :: prog_context,
+/*  1 */        proc_context                :: prog_context,
 
-                prog_varset                 :: prog_varset,
-                var_types                   :: vartypes,
-                head_vars                   :: list(prog_var),
-                inst_varset                 :: inst_varset,
+/*  2 */        prog_varset                 :: prog_varset,
+/*  3 */        var_types                   :: vartypes,
+/*  4 */        head_vars                   :: list(prog_var),
+/*  5 */        inst_varset                 :: inst_varset,
 
                 % The declared modes of arguments.
-                maybe_declared_head_modes   :: maybe(list(mer_mode)),
+/*  6 */        maybe_declared_head_modes   :: maybe(list(mer_mode)),
 
-                actual_head_modes           :: list(mer_mode),
-                maybe_head_modes_constraint :: maybe(mode_constraint),
+/*  7 */        actual_head_modes           :: list(mer_mode),
+/*  8 */        maybe_head_modes_constraint :: maybe(mode_constraint),
 
                 % Liveness (in the mode analysis sense) of the arguments
                 % in the caller; says whether each argument may be used
                 % after the call.
-                head_var_caller_liveness    :: maybe(list(is_live)),
+/*  9 */        head_var_caller_liveness    :: maybe(list(is_live)),
 
                 % The _declared_ determinism of the procedure, or `no'
                 % if there was no detism declaration.
-                declared_detism             :: maybe(determinism),
+/* 10 */        declared_detism             :: maybe(determinism),
 
-                inferred_detism             :: determinism,
-                body                        :: hlds_goal,
+/* 11 */        inferred_detism             :: determinism,
+/* 12 */        body                        :: hlds_goal,
 
                 % No if we must not process this procedure yet (used to delay
                 % mode checking etc. for complicated modes of unification
                 % predicates until the end of the unique_modes pass.)
-                can_process                 :: bool,
+/* 13 */        can_process                 :: bool,
 
-                mode_errors                 :: list(mode_error_info),
+/* 14 */        mode_errors                 :: list(mode_error_info),
 
                 % Information about type_infos and typeclass_infos.
-                proc_rtti_varmaps           :: rtti_varmaps,
+/* 15 */        proc_rtti_varmaps           :: rtti_varmaps,
 
                 % How should the proc be evaluated.
-                eval_method                 :: eval_method,
+/* 16 */        eval_method                 :: eval_method,
 
-                proc_sub_info               :: proc_sub_info
+/* 17 */        proc_sub_info               :: proc_sub_info
             ).
 
 :- type proc_sub_info
Index: compiler/simplify.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/simplify.m,v
retrieving revision 1.241
diff -u -b -r1.241 simplify.m
--- compiler/simplify.m	2 Jul 2009 05:31:07 -0000	1.241
+++ compiler/simplify.m	11 Jul 2009 04:03:59 -0000
@@ -2128,7 +2128,7 @@
     % Construct the variable to hold the comparison result.
     VarSet0 = !.Info ^ simp_varset,
     varset.new_var(VarSet0, R, VarSet),
-    !:Info = !.Info ^ simp_varset := VarSet,
+    !Info ^ simp_varset := VarSet,
 
     % We have to add the type of R to the var_types.
     simplify_info_get_var_types(!.Info, VarTypes0),
@@ -3575,15 +3575,15 @@
     simplify_info::in, simplify_info::out) is det.
 
 simplify_info_reinit(Simplifications, InstMap0, !Info) :-
-    !:Info = !.Info ^ simp_simplifications := Simplifications,
-    !:Info = !.Info ^ simp_common_info := common_info_init,
-    !:Info = !.Info ^ simp_instmap := InstMap0,
-    !:Info = !.Info ^ simp_requantify := no,
-    !:Info = !.Info ^ simp_recompute_atomic := no,
-    !:Info = !.Info ^ simp_rerun_det := no,
-    !:Info = !.Info ^ simp_lambdas := 0,
-    !:Info = !.Info ^ simp_has_parallel_conj := no,
-    !:Info = !.Info ^ simp_has_user_event := no.
+    !Info ^ simp_simplifications := Simplifications,
+    !Info ^ simp_common_info := common_info_init,
+    !Info ^ simp_instmap := InstMap0,
+    !Info ^ simp_requantify := no,
+    !Info ^ simp_recompute_atomic := no,
+    !Info ^ simp_rerun_det := no,
+    !Info ^ simp_lambdas := 0,
+    !Info ^ simp_has_parallel_conj := no,
+    !Info ^ simp_has_user_event := no.
 
     % exported for common.m
 :- interface.
@@ -3724,31 +3724,45 @@
 :- pred simplify_info_set_module_info(module_info::in,
     simplify_info::in, simplify_info::out) is det.
 
-simplify_info_set_det_info(Det, Info, Info ^ simp_det_info := Det).
-simplify_info_set_error_specs(Specs, Info, Info ^ simp_error_specs := Specs).
-simplify_info_set_simplifications(Simp, Info,
-    Info ^ simp_simplifications := Simp).
-simplify_info_set_instmap(InstMap, Info, Info ^ simp_instmap := InstMap).
-simplify_info_set_common_info(Common, Info, Info ^ simp_common_info := Common).
-simplify_info_set_varset(VarSet, Info, Info ^ simp_varset := VarSet).
-simplify_info_set_var_types(VarTypes, Info, Info ^ simp_det_info := DetInfo) :-
-    det_info_set_vartypes(VarTypes, Info ^ simp_det_info, DetInfo).
-simplify_info_set_requantify(Info, Info ^ simp_requantify := yes).
-simplify_info_set_recompute_atomic(Info, Info ^ simp_recompute_atomic := yes).
-simplify_info_set_rerun_det(Info, Info ^ simp_rerun_det := yes).
-simplify_info_set_cost_delta(Delta, Info, Info ^ simp_cost_delta := Delta).
-simplify_info_set_rtti_varmaps(Rtti, Info, Info ^ simp_rtti_varmaps := Rtti).
-simplify_info_set_format_calls(FC, Info, Info ^ simp_format_calls := FC).
-simplify_info_set_inside_duplicated_for_switch(IDFS, Info,
-    Info ^ simp_inside_dupl_for_switch := IDFS).
-simplify_info_set_has_parallel_conj(MHPC, Info,
-    Info ^ simp_has_parallel_conj := MHPC).
-simplify_info_set_found_contains_trace(FCT, Info,
-    Info ^ simp_found_contains_trace := FCT).
-simplify_info_set_has_user_event(HUE, Info, Info ^ simp_has_user_event := HUE).
+simplify_info_set_det_info(Det, !Info) :-
+    !Info ^ simp_det_info := Det.
+simplify_info_set_error_specs(Specs, !Info) :-
+    !Info ^ simp_error_specs := Specs.
+simplify_info_set_simplifications(Simp, !Info) :-
+    !Info ^ simp_simplifications := Simp.
+simplify_info_set_instmap(InstMap, !Info) :-
+    !Info ^ simp_instmap := InstMap.
+simplify_info_set_common_info(Common, !Info) :-
+    !Info ^ simp_common_info := Common.
+simplify_info_set_varset(VarSet, !Info) :-
+    !Info ^ simp_varset := VarSet.
+simplify_info_set_var_types(VarTypes, !Info) :-
+    DetInfo0 = !.Info ^ simp_det_info,
+    det_info_set_vartypes(VarTypes, DetInfo0, DetInfo),
+    !Info ^ simp_det_info := DetInfo.
+simplify_info_set_requantify(!Info) :-
+    !Info ^ simp_requantify := yes.
+simplify_info_set_recompute_atomic(!Info) :-
+    !Info ^ simp_recompute_atomic := yes.
+simplify_info_set_rerun_det(!Info) :-
+    !Info ^ simp_rerun_det := yes.
+simplify_info_set_cost_delta(Delta, !Info) :-
+    !Info ^ simp_cost_delta := Delta.
+simplify_info_set_rtti_varmaps(Rtti, !Info) :-
+    !Info ^ simp_rtti_varmaps := Rtti.
+simplify_info_set_format_calls(FC, !Info) :-
+    !Info ^ simp_format_calls := FC.
+simplify_info_set_inside_duplicated_for_switch(IDFS, !Info) :-
+    !Info ^ simp_inside_dupl_for_switch := IDFS.
+simplify_info_set_has_parallel_conj(MHPC, !Info) :-
+    !Info ^ simp_has_parallel_conj := MHPC.
+simplify_info_set_found_contains_trace(FCT, !Info) :-
+    !Info ^ simp_found_contains_trace := FCT.
+simplify_info_set_has_user_event(HUE, !Info) :-
+    !Info ^ simp_has_user_event := HUE.
 
-simplify_info_incr_cost_delta(Incr, Info,
-    Info ^ simp_cost_delta := Info ^ simp_cost_delta + Incr).
+simplify_info_incr_cost_delta(Incr, !Info) :-
+    !Info ^ simp_cost_delta := !.Info ^ simp_cost_delta + Incr.
 
 simplify_info_add_error_spec(Spec, !Info) :-
     ( simplify_do_warn_simple_code(!.Info) ->
Index: compiler/unused_args.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/unused_args.m,v
retrieving revision 1.157
diff -u -b -r1.157 unused_args.m
--- compiler/unused_args.m	23 Dec 2008 01:37:42 -0000	1.157
+++ compiler/unused_args.m	16 Jul 2009 03:08:33 -0000
@@ -22,8 +22,8 @@
 %   - involved in a simple test, switch or a semidet deconstruction
 %   - used as an argument to another predicate in this module which is used.
 %
-% When using alternate liveness calculation, the following variables are
-% also considered used
+% When using typeinfo liveness, the following variables are also
+% considered used:
 %   - a type-info (or part of a type-info) of a type parameter of the
 %     type of a variable that is used (for example, if a variable
 %     of type list(T) is used, then TypeInfo_for_T is used)
@@ -90,6 +90,7 @@
 :- import_module hlds.goal_util.
 :- import_module hlds.hlds_data.
 :- import_module hlds.hlds_goal.
+:- import_module hlds.hlds_out.
 :- import_module hlds.hlds_pred.
 :- import_module hlds.hlds_rtti.
 :- import_module hlds.instmap.
@@ -99,8 +100,8 @@
 :- import_module libs.globals.
 :- import_module libs.options.
 :- import_module mdbcomp.prim_data.
-:- import_module parse_tree.mercury_to_mercury.
 :- import_module parse_tree.file_names.
+:- import_module parse_tree.mercury_to_mercury.
 :- import_module parse_tree.prog_data.
 :- import_module parse_tree.prog_out.
 :- import_module parse_tree.prog_type.
@@ -230,7 +231,7 @@
     init_var_usage(VarUsage0, PredProcs, ProcCallInfo0, !ModuleInfo),
     % maybe_write_string(VeryVerbose, "% Finished initialisation.\n", !IO),
 
-    unused_args_pass(PredProcs, VarUsage0, VarUsage),
+    unused_args_pass(0, !.ModuleInfo, PredProcs, VarUsage0, VarUsage),
     % maybe_write_string(VeryVerbose, "% Finished analysis.\n", !IO),
 
     map.init(UnusedArgInfo0),
@@ -631,8 +632,8 @@
     ;
         GoalExpr = plain_call(PredId, ProcId, Args, _, _, _),
         module_info_pred_proc_info(Info ^ unarg_module_info, PredId, ProcId,
-            _Pred, Proc),
-        proc_info_get_headvars(Proc, HeadVars),
+            _PredInfo, ProcInfo),
+        proc_info_get_headvars(ProcInfo, HeadVars),
         add_pred_call_arg_dep(proc(PredId, ProcId), Args, HeadVars, !VarDep)
     ;
         GoalExpr = if_then_else(_, Cond, Then, Else),
@@ -860,14 +861,19 @@
 
     % Do a full iteration, check if anything changed, if so, repeat.
     %
-:- pred unused_args_pass(pred_proc_list::in, var_usage::in,var_usage::out)
-    is det.
+:- pred unused_args_pass(int::in, module_info::in, pred_proc_list::in,
+    var_usage::in, var_usage::out) is det.
 
-unused_args_pass(LocalPredProcs, !VarUsage) :-
+unused_args_pass(PassNum, ModuleInfo, LocalPredProcs, !VarUsage) :-
     unused_args_single_pass(LocalPredProcs, no, Changed, !VarUsage),
     (
         Changed = yes,
-        unused_args_pass(LocalPredProcs, !VarUsage)
+        trace [compile_time(flag("unused_args_var_usage")), io(!IO)] (
+            io.format("\nVARIABLE USAGE MAP AFTER PASS %d\n", [i(PassNum)],
+                !IO),
+            write_var_usage_map(ModuleInfo, !.VarUsage, !IO)
+        ),
+        unused_args_pass(PassNum + 1, ModuleInfo, LocalPredProcs, !VarUsage)
     ;
         Changed = no
     ).
@@ -1969,6 +1975,75 @@
 
 %-----------------------------------------------------------------------------%
 
+:- pred write_var_usage_map(module_info::in, var_usage::in, io::di, io::uo)
+    is det.
+
+write_var_usage_map(ModuleInfo, VarUsageMap, !IO) :-
+    map.to_assoc_list(VarUsageMap, VarUsageList),
+    list.foldl(write_var_usage(ModuleInfo), VarUsageList, !IO).
+
+:- pred write_var_usage(module_info::in, pair(pred_proc_id, var_dep)::in,
+    io::di, io::uo) is det.
+
+write_var_usage(ModuleInfo, PredProcId - VarDepMap, !IO) :-
+    PredProcIdStr = pred_proc_id_to_string(ModuleInfo, PredProcId),
+    io.format("\n%s:\n", [s(PredProcIdStr)], !IO),
+    map.to_assoc_list(VarDepMap, VarDepList),
+    module_info_proc_info(ModuleInfo, PredProcId, ProcInfo),
+    proc_info_get_varset(ProcInfo, VarSet),
+    list.foldl2(write_usage_info(ModuleInfo, VarSet), VarDepList,
+        [], RevNoDependVars, !IO),
+    list.reverse(RevNoDependVars, NoDependVars),
+    (
+        NoDependVars = []
+    ;
+        NoDependVars = [_ | _],
+        NoDependVarsStr = mercury_vars_to_string(VarSet, yes, NoDependVars),
+        io.format("nodepend vars: %s\n", [s(NoDependVarsStr)], !IO)
+    ).
+
+:- pred write_usage_info(module_info::in, prog_varset::in,
+    pair(prog_var, usage_info)::in, list(prog_var)::in, list(prog_var)::out,
+    io::di, io::uo) is det.
+
+write_usage_info(ModuleInfo, VarSet, Var - UsageInfo, !RevNoDependVars, !IO) :-
+    UsageInfo = unused(Vars, Args),
+    set.to_sorted_list(Vars, VarList),
+    set.to_sorted_list(Args, ArgList),
+    ( VarList = [], ArgList = [] ->
+        !:RevNoDependVars = [Var | !.RevNoDependVars]
+    ;
+        VarStr = mercury_var_to_string(VarSet, yes, Var),
+        io.format("dependencies of %s:\n", [s(VarStr)], !IO),
+        (
+            VarList = []
+        ;
+            VarList = [_ | _],
+            VarListStr = mercury_vars_to_string(VarSet, yes, VarList),
+            io.format("on variables: %s\n", [s(VarListStr)], !IO)
+        ),
+        (
+            ArgList = []
+        ;
+            ArgList = [_ | _],
+            io.write_string("on arguments:\n", !IO),
+            list.foldl(write_arg_var_in_proc(ModuleInfo), ArgList, !IO)
+        )
+    ).
+
+:- pred write_arg_var_in_proc(module_info::in, arg_var_in_proc::in,
+    io::di, io::uo) is det.
+
+write_arg_var_in_proc(ModuleInfo, ArgVarInProc, !IO) :-
+    ArgVarInProc = arg_var_in_proc(PredProcId, Var),
+    PredProcIdStr = pred_proc_id_to_string(ModuleInfo, PredProcId),
+    module_info_proc_info(ModuleInfo, PredProcId, ProcInfo),
+    proc_info_get_varset(ProcInfo, VarSet),
+    VarStr = mercury_var_to_string(VarSet, yes, Var),
+    io.format("%s: %s\n", [s(PredProcIdStr), s(VarStr)], !IO).
+
+%-----------------------------------------------------------------------------%
+
 :- func this_file = string.
 
 this_file = "unused_args.m".
cvs diff: Diffing compiler/notes
cvs diff: Diffing debian
cvs diff: Diffing debian/patches
cvs diff: Diffing deep_profiler
Index: deep_profiler/display_report.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/deep_profiler/display_report.m,v
retrieving revision 1.19
diff -u -b -r1.19 display_report.m
--- deep_profiler/display_report.m	2 Jan 2009 02:59:35 -0000	1.19
+++ deep_profiler/display_report.m	10 Jul 2009 06:10:39 -0000
@@ -1712,10 +1712,11 @@
 
 display_report_proc_var_use_dump(_Prefs, ProcVarUseDumpInfo, Display) :-
     ProcVarUseDumpInfo = proc_var_use_dump_info(AverageProcCost, VarUses),
-    ProcCostRow = table_row([table_cell(td_s("Average Proc Cost: ")),
-                             table_cell(td_f(AverageProcCost))]),
+    HeaderCell = table_cell(td_s("Average Proc Cost: ")),
+    DataCell = table_cell(td_f(AverageProcCost)),
+    ProcCostRow = table_row([HeaderCell, DataCell]),
     format_proc_var_uses(VarUses, 1, VarUseRows),
-    Rows = [ ProcCostRow | VarUseRows ],
+    Rows = [ProcCostRow | VarUseRows],
     Table = table(table_class_do_not_box, 2, no, Rows),
     Title = "Dump of procedure's var use info",
     Display = display(yes(Title), [display_table(Table)]). 
@@ -1725,9 +1726,42 @@
 
 format_proc_var_uses([], _, []).
 format_proc_var_uses([VarUse | VarUses], RowNum, [Row | Rows]) :-
-    format_proc_var_uses(VarUses, RowNum+1, Rows),
-    Row = table_row([table_cell(td_s(format("Argument: %i", [i(RowNum)]))), 
-                     table_cell(td_s(string(VarUse)))]).
+    HeaderCell = table_cell(td_s(format("Argument: %i", [i(RowNum)]))), 
+    VarUse = var_use_info(CostUntilUse, UseType),
+    (
+        CostUntilUse = cost_since_proc_start(CostSince),
+        (
+            UseType = var_use_production,
+            string.format("%f from start until production",
+                [f(CostSince)], UseStr)
+        ;
+            UseType = var_use_consumption,
+            string.format("%f from start until consumption",
+                [f(CostSince)], UseStr)
+        ;
+            UseType = var_use_other,
+            string.format("%f from start until other use",
+                [f(CostSince)], UseStr)
+        )
+    ;
+        CostUntilUse = cost_before_proc_end(CostBefore),
+        (
+            UseType = var_use_production,
+            string.format("%f from production until end",
+                [f(CostBefore)], UseStr)
+        ;
+            UseType = var_use_consumption,
+            string.format("%f from consumption until end",
+                [f(CostBefore)], UseStr)
+        ;
+            UseType = var_use_other,
+            string.format("%f from other use until end",
+                [f(CostBefore)], UseStr)
+        )
+    ),
+    DataCell = table_cell(td_s(UseStr)),
+    Row = table_row([HeaderCell, DataCell]),
+    format_proc_var_uses(VarUses, RowNum + 1, Rows).
 
 %-----------------------------------------------------------------------------%
 %
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/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/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
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