[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