[m-rev.] for review: renaming head variables fix
Zoltan Somogyi
zs at csse.unimelb.edu.au
Wed May 16 20:34:59 AEST 2007
Fix the failure of the invalid/modes_erroneous test case, whose symptom was
an error message about a "mode error in unification of `X' and `X'".
The root cause of the problem was that the renaming of head variables
computed by headvar_names.m was being applied too early, during typechecking.
The fix is to apply it after the frontend (all the passes that can generate
error messages).
To avoid slowdowns from larger pred_infos, this diff also moves the least
frequently used fields of pred_infos to a subterm. (Proc_infos already had
a subterm.) This leads to an almost 3% speedup.
compiler/headvar_names.m:
Store the renaming instead of applying it.
compiler/simplify.m:
Apply the renaming in invocations after the front end, since doing so
may allow some excess assignments to be eliminated.
compiler/hlds_pred.m:
Add fields to pred_infos and proc_infos for the renaming.
Move the least frequently used fields of pred_infos into a
pred_sub_info.
Some fields of pred_infos were being accessed using predicates
that did not follow our naming conventions, and some were accessed
using field access functions that are now inappropriate; fix them all.
Require the caller to provide the renaming when creating new pred_infos
and proc_infos. This is to force the compiler components that do this
to propagate the renaming fields of the original predicates and/or
procedures to their modified versions.
Convert that some old code that used if-then-elses to use switches
instead.
compiler/hlds_out.m:
Write out the new pred_info and proc_info fields.
compiler/*.m:
Conform to the changes in hlds_pred.m.
compiler/hlds_clauses.m:
Avoid ambiguity by giving a prefix to the fields of the clauses_info
type.
tests/invalid/ho_type_mode_bug.err_exp:
tests/invalid/merge_ground_any.err_exp:
Don't expect error messages about a "X = X" anymore.
Zoltan.
cvs diff: Diffing .
cvs diff: Diffing analysis
cvs diff: Diffing bindist
cvs diff: Diffing boehm_gc
cvs diff: Diffing boehm_gc/Mac_files
cvs diff: Diffing boehm_gc/cord
cvs diff: Diffing boehm_gc/cord/private
cvs diff: Diffing boehm_gc/doc
cvs diff: Diffing boehm_gc/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/accumulator.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/accumulator.m,v
retrieving revision 1.66
diff -u -b -r1.66 accumulator.m
--- compiler/accumulator.m 6 Jan 2007 09:23:23 -0000 1.66
+++ compiler/accumulator.m 16 May 2007 01:11:12 -0000
@@ -257,7 +257,7 @@
->
true
;
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
PredPieces = describe_one_pred_name(!.ModuleInfo,
should_module_qualify, PredId),
write_error_pieces(Context, 0, [words("In") | PredPieces], !IO),
@@ -1449,6 +1449,7 @@
proc_info_get_context(OrigProcInfo, Context),
proc_info_get_rtti_varmaps(OrigProcInfo, RttiVarMaps),
proc_info_get_is_address_taken(OrigProcInfo, IsAddressTaken),
+ proc_info_get_var_name_remap(OrigProcInfo, VarNameRemap),
Substs = substs(AccVarSubst, _RecCallSubst, _AssocCallSubst,
_UpdateSubst),
@@ -1471,7 +1472,8 @@
list.map(map.lookup(VarTypes), Accs, AccTypes),
proc_info_create(Context, VarSet, VarTypes, HeadVars, InstVarSet,
- HeadModes, Detism, Goal, RttiVarMaps, IsAddressTaken, AccProcInfo).
+ HeadModes, Detism, Goal, RttiVarMaps, IsAddressTaken, VarNameRemap,
+ AccProcInfo).
%-----------------------------------------------------------------------------%
@@ -1488,10 +1490,11 @@
ModuleName = pred_info_module(OrigPredInfo),
Name = pred_info_name(OrigPredInfo),
PredOrFunc = pred_info_is_pred_or_func(OrigPredInfo),
- pred_info_context(OrigPredInfo, PredContext),
+ pred_info_get_context(OrigPredInfo, PredContext),
pred_info_get_markers(OrigPredInfo, Markers),
pred_info_get_class_context(OrigPredInfo, ClassContext),
pred_info_get_origin(OrigPredInfo, OldOrigin),
+ pred_info_get_var_name_remap(OrigPredInfo, VarNameRemap),
set.init(Assertions),
@@ -1509,7 +1512,7 @@
OldOrigin, OrigPredId),
pred_info_create(ModuleName, SymName, PredOrFunc, PredContext, Origin,
status_local, Markers, Types, TypeVarSet, ExistQVars, ClassContext,
- Assertions, NewProcInfo, NewProcId, NewPredInfo).
+ Assertions, VarNameRemap, NewProcInfo, NewProcId, NewPredInfo).
%-----------------------------------------------------------------------------%
Index: compiler/add_class.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/add_class.m,v
retrieving revision 1.26
diff -u -b -r1.26 add_class.m
--- compiler/add_class.m 19 Jan 2007 07:04:07 -0000 1.26
+++ compiler/add_class.m 15 May 2007 01:59:32 -0000
@@ -601,7 +601,7 @@
list(error_spec)::in, list(error_spec)::out) is det.
pred_method_with_no_modes_error(PredInfo, !Specs) :-
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
Module = pred_info_module(PredInfo),
Name = pred_info_name(PredInfo),
Arity = pred_info_orig_arity(PredInfo),
Index: compiler/add_clause.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/add_clause.m,v
retrieving revision 1.42
diff -u -b -r1.42 add_clause.m
--- compiler/add_clause.m 19 Jan 2007 07:04:07 -0000 1.42
+++ compiler/add_clause.m 15 May 2007 01:59:48 -0000
@@ -154,7 +154,7 @@
globals.io_lookup_bool_option(very_verbose, VeryVerbose, !IO),
(
VeryVerbose = yes,
- pred_info_clauses_info(!.PredInfo, MsgClauses),
+ pred_info_get_clauses_info(!.PredInfo, MsgClauses),
NumClauses =
num_clauses_in_clauses_rep(MsgClauses ^ clauses_rep),
io.format("%% Processing clause %d for ", [i(NumClauses + 1)],
@@ -223,7 +223,7 @@
Spec = error_spec(severity_error, phase_parse_tree_to_hlds, [Msg]),
!:Specs = [Spec | !.Specs]
;
- pred_info_clauses_info(!.PredInfo, Clauses0),
+ pred_info_get_clauses_info(!.PredInfo, Clauses0),
pred_info_get_typevarset(!.PredInfo, TVarSet0),
maybe_add_default_func_mode(!PredInfo, _),
select_applicable_modes(Args, ClauseVarSet, Status, Context,
Index: compiler/add_pragma.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/add_pragma.m,v
retrieving revision 1.63
diff -u -b -r1.63 add_pragma.m
--- compiler/add_pragma.m 7 May 2007 05:21:29 -0000 1.63
+++ compiler/add_pragma.m 16 May 2007 01:03:28 -0000
@@ -816,10 +816,11 @@
SubstDesc = list.map(subst_desc, Subst),
Origin = origin_transformed(
transform_type_specialization(SubstDesc), OrigOrigin, PredId),
+ pred_info_get_var_name_remap(PredInfo0, VarNameRemap),
pred_info_init(ModuleName, SpecName, PredArity, PredOrFunc,
Context, Origin, Status, goal_type_none, Markers,
Types, TVarSet, ExistQVars, ClassContext, Proofs,
- ConstraintMap, Clauses, NewPredInfo0),
+ ConstraintMap, Clauses, VarNameRemap, NewPredInfo0),
pred_info_set_procedures(Procs, NewPredInfo0, NewPredInfo),
module_info_get_predicate_table(!.ModuleInfo, PredTable0),
predicate_table_insert(NewPredInfo, NewPredId,
@@ -1467,7 +1468,7 @@
% Lookup some information we need from the pred_info and proc_info.
PredName = pred_info_name(!.PredInfo),
PredModule = pred_info_module(!.PredInfo),
- pred_info_clauses_info(!.PredInfo, Clauses0),
+ pred_info_get_clauses_info(!.PredInfo, Clauses0),
pred_info_get_purity(!.PredInfo, Purity),
pred_info_get_markers(!.PredInfo, Markers),
@@ -1563,7 +1564,7 @@
% into mode-specific clauses.
pred_info_clause_goal_type(!.PredInfo)
->
- pred_info_clauses_info(!.PredInfo, CInfo0),
+ pred_info_get_clauses_info(!.PredInfo, CInfo0),
clauses_info_clauses_only(CInfo0, ClauseList0),
ClauseList = list.map(
(func(C) = Res :-
@@ -1625,7 +1626,7 @@
get_procedure_matching_declmodes_with_renaming(ExistingProcs,
Modes, !.ModuleInfo, ProcId)
->
- pred_info_clauses_info(!.PredInfo, Clauses0),
+ pred_info_get_clauses_info(!.PredInfo, Clauses0),
pred_info_get_arg_types(!.PredInfo, ArgTypes),
pred_info_get_purity(!.PredInfo, Purity),
pred_info_get_markers(!.PredInfo, Markers),
Index: compiler/add_pred.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/add_pred.m,v
retrieving revision 1.29
diff -u -b -r1.29 add_pred.m
--- compiler/add_pred.m 19 Jan 2007 07:04:07 -0000 1.29
+++ compiler/add_pred.m 16 May 2007 01:04:54 -0000
@@ -180,16 +180,17 @@
purity_to_markers(Purity, PurityMarkers),
markers_to_marker_list(PurityMarkers, MarkersList),
list.foldl(add_marker, MarkersList, Markers0, Markers),
+ map.init(VarNameRemap),
pred_info_init(ModuleName, PredName, Arity, PredOrFunc, Context,
origin_user(PredName), Status, goal_type_none, Markers, Types,
TVarSet, ExistQVars, ClassContext, Proofs, ConstraintMap,
- ClausesInfo, PredInfo0),
+ ClausesInfo, VarNameRemap, PredInfo0),
(
predicate_table_search_pf_m_n_a(PredTable0, is_fully_qualified,
PredOrFunc, MNameOfPred, PName, Arity, [OrigPred | _])
->
module_info_pred_info(!.ModuleInfo, OrigPred, OrigPredInfo),
- pred_info_context(OrigPredInfo, OrigContext),
+ pred_info_get_context(OrigPredInfo, OrigContext),
DeclString = pred_or_func_to_str(PredOrFunc),
adjust_func_arity(PredOrFunc, OrigArity, Arity),
multiple_def_error(ItemStatus, PredName, OrigArity, DeclString,
@@ -227,8 +228,8 @@
add_builtin(PredId, Types, !PredInfo) :-
Module = pred_info_module(!.PredInfo),
Name = pred_info_name(!.PredInfo),
- pred_info_context(!.PredInfo, Context),
- pred_info_clauses_info(!.PredInfo, ClausesInfo0),
+ pred_info_get_context(!.PredInfo, Context),
+ pred_info_get_clauses_info(!.PredInfo, ClausesInfo0),
clauses_info_get_varset(ClausesInfo0, VarSet0),
clauses_info_get_headvars(ClausesInfo0, HeadVars),
% XXX ARGVEC - clean this up after the pred_info is converted to
@@ -337,9 +338,10 @@
ModeId) :-
pred_info_get_procedures(PredInfo0, Procs0),
pred_info_get_arg_types(PredInfo0, ArgTypes),
+ pred_info_get_var_name_remap(PredInfo0, VarNameRemap),
next_mode_id(Procs0, ModeId),
- proc_info_init(Context, Arity, ArgTypes, MaybeDeclaredArgModes,
- ArgModes, MaybeArgLives, MaybeDet, IsAddressTaken, NewProc0),
+ proc_info_init(Context, Arity, ArgTypes, MaybeDeclaredArgModes, ArgModes,
+ MaybeArgLives, MaybeDet, IsAddressTaken, VarNameRemap, NewProc0),
proc_info_set_inst_varset(InstVarSet, NewProc0, NewProc),
map.det_insert(Procs0, ModeId, NewProc, Procs),
pred_info_set_procedures(Procs, PredInfo0, PredInfo).
@@ -473,9 +475,11 @@
% Existential types must be declared, they won't be inferred.
ExistQVars = [],
init_markers(Markers0),
+ map.init(VarNameRemap),
pred_info_init(ModuleName, PredName, Arity, PredOrFunc, Context,
Origin, Status, goal_type_none, Markers0, Types, TVarSet, ExistQVars,
- ClassContext, Proofs, ConstraintMap, ClausesInfo, PredInfo0),
+ ClassContext, Proofs, ConstraintMap, ClausesInfo, VarNameRemap,
+ PredInfo0),
add_marker(marker_infer_type, Markers0, Markers),
pred_info_set_markers(Markers, PredInfo0, PredInfo),
(
Index: compiler/add_special_pred.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/add_special_pred.m,v
retrieving revision 1.19
diff -u -b -r1.19 add_special_pred.m
--- compiler/add_special_pred.m 19 Jan 2007 07:04:07 -0000 1.19
+++ compiler/add_special_pred.m 16 May 2007 01:05:26 -0000
@@ -373,9 +373,11 @@
% XXX this context might not be empty
ClassContext = constraints([], []),
ExistQVars = [],
+ map.init(VarNameRemap),
pred_info_init(ModuleName, PredName, Arity, pf_predicate, Context,
Origin, Status, goal_type_none, Markers, ArgTypes, TVarSet, ExistQVars,
- ClassContext, Proofs, ConstraintMap, ClausesInfo0, PredInfo0),
+ ClassContext, Proofs, ConstraintMap, ClausesInfo0, VarNameRemap,
+ PredInfo0),
ArgLives = no,
varset.init(InstVarSet),
% Should not be any inst vars here so it's ok to use a
Index: compiler/assertion.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/assertion.m,v
retrieving revision 1.56
diff -u -b -r1.56 assertion.m
--- compiler/assertion.m 6 Jan 2007 09:23:24 -0000 1.56
+++ compiler/assertion.m 14 May 2007 15:55:53 -0000
@@ -433,7 +433,7 @@
module_info_get_assertion_table(Module, AssertTable),
assertion_table_lookup(AssertTable, AssertId, PredId),
module_info_pred_info(Module, PredId, PredInfo),
- pred_info_clauses_info(PredInfo, ClausesInfo),
+ pred_info_get_clauses_info(PredInfo, ClausesInfo),
clauses_info_clauses_only(ClausesInfo, Clauses),
( Clauses = [clause(_ProcIds, Goal0, _Lang, _Context)] ->
normalise_goal(Goal0, Goal)
Index: compiler/build_mode_constraints.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/build_mode_constraints.m,v
retrieving revision 1.25
diff -u -b -r1.25 build_mode_constraints.m
--- compiler/build_mode_constraints.m 6 Jan 2007 10:56:10 -0000 1.25
+++ compiler/build_mode_constraints.m 14 May 2007 15:52:05 -0000
@@ -265,7 +265,7 @@
add_mc_vars_for_pred_head(ModuleInfo, PredId, !VarInfo) :-
module_info_pred_info(ModuleInfo, PredId, PredInfo),
- pred_info_clauses_info(PredInfo, ClausesInfo),
+ pred_info_get_clauses_info(PredInfo, ClausesInfo),
clauses_info_get_headvar_list(ClausesInfo, HeadVars),
clauses_info_get_varset(ClausesInfo, ProgVarset),
list.foldl(add_mc_var_for_pred_head(ProgVarset, PredId), HeadVars,
@@ -339,7 +339,7 @@
add_clauses_constraints(ModuleInfo, PredId, PredInfo, !VarInfo,
!Constraints) :-
- pred_info_clauses_info(PredInfo, ClausesInfo),
+ pred_info_get_clauses_info(PredInfo, ClausesInfo),
clauses_info_get_headvars(ClausesInfo, HeadVars),
clauses_info_clauses_only(ClausesInfo, Clauses),
clauses_info_get_varset(ClausesInfo, ProgVarset),
@@ -442,7 +442,7 @@
( pred_info_infer_modes(CalleePredInfo) ->
% No modes declared so just constrain the hearvars
- pred_info_clauses_info(CalleePredInfo, CalleeClausesInfo),
+ pred_info_get_clauses_info(CalleePredInfo, CalleeClausesInfo),
clauses_info_get_headvar_list(CalleeClausesInfo, CalleeHeadVars),
add_mode_infer_callee(CalleePredId, !Constraints),
add_call_headvar_constraints(ProgVarset, Context, GoalPath,
Index: compiler/check_typeclass.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/check_typeclass.m,v
retrieving revision 1.111
diff -u -b -r1.111 check_typeclass.m
--- compiler/check_typeclass.m 19 Jan 2007 07:04:08 -0000 1.111
+++ compiler/check_typeclass.m 16 May 2007 01:00:35 -0000
@@ -681,10 +681,11 @@
% order.
MethodConstraints = instance_method_constraints(ClassId,
InstanceTypes, InstanceConstraints, ClassMethodClassContext),
+ map.init(VarNameRemap),
pred_info_init(InstanceModuleName, PredName, PredArity, PredOrFunc,
Context, origin_instance_method(MethodConstraints), Status,
goal_type_none, Markers, ArgTypes, TVarSet, ExistQVars, ClassContext,
- Proofs, ConstraintMap, ClausesInfo, PredInfo0),
+ Proofs, ConstraintMap, ClausesInfo, VarNameRemap, PredInfo0),
pred_info_set_clauses_info(ClausesInfo, PredInfo0, PredInfo1),
% Add procs with the expected modes and determinisms
@@ -1709,7 +1710,7 @@
= error_spec.
report_unbound_tvars_in_pred_context(Vars, PredInfo) = Spec :-
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
pred_info_get_arg_types(PredInfo, TVarSet, _, ArgTypes),
PredName = pred_info_name(PredInfo),
Module = pred_info_module(PredInfo),
@@ -1807,7 +1808,7 @@
report_badly_quantified_vars(PredInfo, QuantErrorType, TVars) = Spec :-
pred_info_get_typevarset(PredInfo, TVarSet),
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
InDeclaration = [words("In declaration of")] ++
describe_one_pred_info_name(should_module_qualify, PredInfo) ++
Index: compiler/clause_to_proc.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/clause_to_proc.m,v
retrieving revision 1.78
diff -u -b -r1.78 clause_to_proc.m
--- compiler/clause_to_proc.m 26 Apr 2007 09:10:41 -0000 1.78
+++ compiler/clause_to_proc.m 15 May 2007 01:56:47 -0000
@@ -124,7 +124,7 @@
FuncRetMode = OutMode,
list.append(FuncArgModes, [FuncRetMode], PredArgModes),
Determinism = detism_det,
- pred_info_context(PredInfo0, Context),
+ pred_info_get_context(PredInfo0, Context),
MaybePredArgLives = no,
varset.init(InstVarSet),
% No inst_vars in default func mode.
@@ -174,7 +174,7 @@
copy_clauses_to_procs(!PredInfo) :-
pred_info_get_procedures(!.PredInfo, Procs0),
- pred_info_clauses_info(!.PredInfo, ClausesInfo),
+ pred_info_get_clauses_info(!.PredInfo, ClausesInfo),
ProcIds = pred_info_all_non_imported_procids(!.PredInfo),
copy_clauses_to_procs_2(ProcIds, ClausesInfo, Procs0, Procs),
pred_info_set_procedures(Procs, !PredInfo).
Index: compiler/dead_proc_elim.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/dead_proc_elim.m,v
retrieving revision 1.120
diff -u -b -r1.120 dead_proc_elim.m
--- compiler/dead_proc_elim.m 19 Jan 2007 07:04:09 -0000 1.120
+++ compiler/dead_proc_elim.m 14 May 2007 15:57:48 -0000
@@ -852,7 +852,7 @@
!:DeadInfo = pred_elim_info(ModuleInfo, !.Queue, !.Examined,
!.Needed, NeededNames),
module_info_pred_info(ModuleInfo, PredId, PredInfo),
- pred_info_clauses_info(PredInfo, ClausesInfo),
+ pred_info_get_clauses_info(PredInfo, ClausesInfo),
clauses_info_get_clauses_rep(ClausesInfo, ClausesRep),
get_clause_list_any_order(ClausesRep, Clauses),
list.foldl(dead_pred_elim_process_clause, Clauses, !DeadInfo)
Index: compiler/dep_par_conj.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/dep_par_conj.m,v
retrieving revision 1.19
diff -u -b -r1.19 dep_par_conj.m
--- compiler/dep_par_conj.m 10 May 2007 05:34:05 -0000 1.19
+++ compiler/dep_par_conj.m 16 May 2007 01:06:48 -0000
@@ -1376,11 +1376,12 @@
futurise_argtypes(1, FutureArgs, ArgTypes0, ArgTypes),
- pred_info_context(!.PredInfo, Context),
- pred_info_clauses_info(!.PredInfo, ClausesInfo),
+ pred_info_get_context(!.PredInfo, Context),
+ pred_info_get_clauses_info(!.PredInfo, ClausesInfo),
pred_info_get_markers(!.PredInfo, Markers),
pred_info_get_goal_type(!.PredInfo, GoalType),
pred_info_get_class_context(!.PredInfo, ClassContext),
+ pred_info_get_var_name_remap(!.PredInfo, VarNameRemap),
% Since this pred_info isn't built until after the polymorphism
% transformation is complete, we just use dummy maps for the class
@@ -1392,7 +1393,7 @@
pred_info_init(PredModule, Name, Arity, PredOrFunc, Context, Origin,
Status, GoalType, Markers, ArgTypes, Tvars, ExistQVars,
ClassContext, EmptyProofs, EmptyConstraintMap, ClausesInfo,
- !:PredInfo),
+ VarNameRemap, !:PredInfo),
pred_info_set_typevarset(TypeVars, !PredInfo).
:- pred futurise_argtypes(arg_pos::in, list(arg_pos)::in, list(mer_type)::in,
Index: compiler/dependency_graph.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/dependency_graph.m,v
retrieving revision 1.94
diff -u -b -r1.94 dependency_graph.m
--- compiler/dependency_graph.m 19 Jan 2007 07:04:10 -0000 1.94
+++ compiler/dependency_graph.m 14 May 2007 15:57:59 -0000
@@ -331,7 +331,7 @@
->
true
;
- pred_info_clauses_info(PredInfo, ClausesInfo),
+ pred_info_get_clauses_info(PredInfo, ClausesInfo),
clauses_info_get_clauses_rep(ClausesInfo, ClausesRep),
get_clause_list_any_order(ClausesRep, Clauses),
Goals = list.map(func(clause(_, Goal, _, _)) = Goal, Clauses),
Index: compiler/fact_table.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/fact_table.m,v
retrieving revision 1.82
diff -u -b -r1.82 fact_table.m
--- compiler/fact_table.m 19 Jan 2007 07:04:12 -0000 1.82
+++ compiler/fact_table.m 14 May 2007 15:57:00 -0000
@@ -574,7 +574,7 @@
StructName = "mercury__" ++ Identifier ++ "_fact_table",
% Define a struct for a fact table entry.
- pred_info_context(PredInfo, Context), % location of :- pred decl
+ pred_info_get_context(PredInfo, Context), % location of :- pred decl
create_fact_table_struct(FactArgInfos, 1, Context, StructContents,
!Errors),
( StructContents = "" ->
Index: compiler/goal_path.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/goal_path.m,v
retrieving revision 1.42
diff -u -b -r1.42 goal_path.m
--- compiler/goal_path.m 19 Apr 2007 04:24:50 -0000 1.42
+++ compiler/goal_path.m 14 May 2007 15:52:45 -0000
@@ -89,7 +89,7 @@
proc_info_set_goal(Goal, !Proc).
fill_goal_path_slots_in_clauses(ModuleInfo, OmitModeEquivPrefix, !PredInfo) :-
- pred_info_clauses_info(!.PredInfo, ClausesInfo0),
+ pred_info_get_clauses_info(!.PredInfo, ClausesInfo0),
clauses_info_clauses_only(ClausesInfo0, Clauses0),
clauses_info_get_vartypes(ClausesInfo0, VarTypes),
SlotInfo = slot_info(VarTypes, ModuleInfo, OmitModeEquivPrefix),
Index: compiler/headvar_names.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/headvar_names.m,v
retrieving revision 1.1
diff -u -b -r1.1 headvar_names.m
--- compiler/headvar_names.m 14 May 2007 10:58:16 -0000 1.1
+++ compiler/headvar_names.m 16 May 2007 01:36:41 -0000
@@ -7,9 +7,11 @@
%-----------------------------------------------------------------------------%
%
% File: headvar_names.m.
-% Main author: fjh.
+% Main author: zs.
%
-% This file contains code for improving the names of head variables.
+% This file contains code for improving the names of head variables,
+% replacing HeadVar__n with user-given names whereever the clauses
+% agree on the names.
:- module hlds.headvar_names.
@@ -49,10 +51,7 @@
:- import_module svvarset.
maybe_improve_headvar_names(Globals, !PredInfo) :-
- pred_info_clauses_info(!.PredInfo, ClausesInfo0),
- clauses_info_clauses_only(ClausesInfo0, Clauses0),
- clauses_info_get_headvars(ClausesInfo0, HeadVars0),
- clauses_info_get_varset(ClausesInfo0, VarSet0),
+ globals.lookup_bool_option(Globals, make_optimization_interface, MakeOpt),
(
% Don't do this when making a `.opt' file.
% intermod.m needs to perform a similar transformation
@@ -60,12 +59,17 @@
% places the original argument terms, not just the argument
% variables in the clause head, and this pass would make it
% difficult to work out what were the original arguments).
- globals.lookup_bool_option(Globals, make_optimization_interface, yes)
- ->
- true
+ MakeOpt = yes
;
- Clauses0 = [SingleClause0]
- ->
+ MakeOpt = no,
+ pred_info_get_clauses_info(!.PredInfo, ClausesInfo0),
+ clauses_info_clauses_only(ClausesInfo0, Clauses0),
+ clauses_info_get_headvars(ClausesInfo0, HeadVars0),
+ clauses_info_get_varset(ClausesInfo0, VarSet0),
+ (
+ Clauses0 = []
+ ;
+ Clauses0 = [SingleClause0],
SingleClause0 = clause(ApplicableProcs, Goal0, Language, Context),
Goal0 = hlds_goal(_, GoalInfo0),
@@ -82,21 +86,49 @@
clauses_info_set_headvars(HeadVars, ClausesInfo0, ClausesInfo1),
SingleClause = clause(ApplicableProcs, Goal, Language, Context),
- clauses_info_set_clauses([SingleClause], ClausesInfo1, ClausesInfo2),
+ clauses_info_set_clauses([SingleClause],
+ ClausesInfo1, ClausesInfo2),
clauses_info_set_varset(VarSet, ClausesInfo2, ClausesInfo),
pred_info_set_clauses_info(ClausesInfo, !PredInfo)
;
+ Clauses0 = [_, _ | _],
% If a headvar is assigned to a variable with the same name
% (or no name) in every clause, rename it to have that name.
- list.map2(find_headvar_names_in_clause(VarSet0, HeadVars0), Clauses0,
- VarNameInfoMaps, VarsInMapSets),
+ list.map2(find_headvar_names_in_clause(VarSet0, HeadVars0),
+ Clauses0, VarNameInfoMaps, VarsInMapSets),
ConsensusMap = find_consensus_headvar_names(VarsInMapSets,
VarNameInfoMaps),
- map.foldl(svvarset.name_var, ConsensusMap, VarSet0, VarSet),
- clauses_info_set_varset(VarSet, ClausesInfo0, ClausesInfo),
- pred_info_set_clauses_info(ClausesInfo, !PredInfo)
+
+ % We don't apply the renaming right now, because that could lead to
+ % error messages about unifications of the form X = X instead of
+ % HeadVar__n = X, which would be confusing.
+ %
+ % Instead, we record the renaming, and apply it only when we
+ % generate the data structures that record variable names for
+ % the debugger.
+ %
+ % We put the renaming into both all the proc_infos of the predicate
+ % (which is where stack_layout.m gets them from), and into the
+ % pred_info (so that any later procedures and/or predicates created
+ % from this one will get the rename map as well).
+
+ pred_info_set_var_name_remap(ConsensusMap, !PredInfo),
+ ProcIds = pred_info_all_procids(!.PredInfo),
+ pred_info_get_procedures(!.PredInfo, ProcTable0),
+ list.foldl(set_var_name_remap_in_proc(ConsensusMap), ProcIds,
+ ProcTable0, ProcTable),
+ pred_info_set_procedures(ProcTable, !PredInfo)
+ )
).
+:- pred set_var_name_remap_in_proc(map(prog_var, string)::in, proc_id::in,
+ proc_table::in, proc_table::out) is det.
+
+set_var_name_remap_in_proc(ConsensusMap, ProcId, !ProcTable) :-
+ map.lookup(!.ProcTable, ProcId, ProcInfo0),
+ proc_info_set_var_name_remap(ConsensusMap, ProcInfo0, ProcInfo),
+ svmap.det_update(ProcId, ProcInfo, !ProcTable).
+
:- pred improve_single_clause_headvars(list(hlds_goal)::in,
proc_arg_vector(prog_var)::in, list(prog_var)::in,
prog_varset::in, prog_varset::out,
Index: compiler/hhf.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/hhf.m,v
retrieving revision 1.30
diff -u -b -r1.30 hhf.m
--- compiler/hhf.m 13 Jan 2007 12:23:06 -0000 1.30
+++ compiler/hhf.m 15 May 2007 15:26:12 -0000
@@ -67,28 +67,28 @@
( pred_info_is_imported(PredInfo0) ->
% AAA
% PredInfo2 = PredInfo0
- pred_info_clauses_info(PredInfo0, ClausesInfo),
+ pred_info_get_clauses_info(PredInfo0, ClausesInfo),
clauses_info_get_headvar_list(ClausesInfo, HeadVars),
clauses_info_get_varset(ClausesInfo, VarSet),
some [!IG] (
- !:IG = PredInfo0 ^ inst_graph_info,
+ pred_info_get_inst_graph_info(PredInfo0, !:IG),
inst_graph.init(HeadVars, InstGraph),
!:IG = !.IG ^ implementation_inst_graph := InstGraph,
!:IG = !.IG ^ interface_inst_graph := InstGraph,
!:IG = !.IG ^ interface_vars := HeadVars,
!:IG = !.IG ^ interface_varset := VarSet,
- PredInfo2 = PredInfo0 ^ inst_graph_info := !.IG
+ pred_info_set_inst_graph_info(!.IG, PredInfo0, PredInfo2)
)
;
write_pred_progress_message("% Calculating HHF and inst graph for ",
PredId, !.ModuleInfo, !IO),
- pred_info_clauses_info(PredInfo0, ClausesInfo0),
+ pred_info_get_clauses_info(PredInfo0, ClausesInfo0),
process_clauses_info(Simple, !.ModuleInfo, ClausesInfo0,
ClausesInfo, ImplementationInstGraph),
pred_info_set_clauses_info(ClausesInfo, PredInfo0, PredInfo1),
some [!IG] (
- !:IG = PredInfo1 ^ inst_graph_info,
+ pred_info_get_inst_graph_info(PredInfo1, !:IG),
!:IG = !.IG ^ implementation_inst_graph := ImplementationInstGraph,
% AAA only for non-imported preds with no mode decls.
@@ -104,7 +104,7 @@
!:IG = !.IG ^ interface_vars := InterfaceVars,
!:IG = !.IG ^ interface_varset := VarSet,
- PredInfo2 = PredInfo1 ^ inst_graph_info := !.IG
+ pred_info_set_inst_graph_info(!.IG, PredInfo1, PredInfo2)
)
),
Index: compiler/higher_order.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/higher_order.m,v
retrieving revision 1.166
diff -u -b -r1.166 higher_order.m
--- compiler/higher_order.m 19 Jan 2007 07:04:13 -0000 1.166
+++ compiler/higher_order.m 16 May 2007 01:07:09 -0000
@@ -2617,6 +2617,7 @@
pred_info_get_markers(PredInfo0, MarkerList),
pred_info_get_goal_type(PredInfo0, GoalType),
pred_info_get_class_context(PredInfo0, ClassContext),
+ pred_info_get_var_name_remap(PredInfo0, VarNameRemap),
varset.init(EmptyVarSet),
map.init(EmptyVarTypes),
map.init(EmptyTVarNameMap),
@@ -2628,14 +2629,13 @@
% if it's filled in.
set_clause_list([], ClausesRep),
EmptyHeadVars = proc_arg_vector_init(pf_predicate, []),
- ClausesInfo = clauses_info(EmptyVarSet, EmptyVarTypes,
- EmptyTVarNameMap, EmptyVarTypes, EmptyHeadVars, ClausesRep,
- EmptyRttiVarMaps, no),
+ ClausesInfo = clauses_info(EmptyVarSet, EmptyVarTypes, EmptyTVarNameMap,
+ EmptyVarTypes, EmptyHeadVars, ClausesRep, EmptyRttiVarMaps, no),
Origin = origin_transformed(Transform, OrigOrigin, CallerPredId),
pred_info_init(PredModule, SymName, Arity, PredOrFunc, Context, Origin,
Status, GoalType, MarkerList, Types, ArgTVarSet, ExistQVars,
ClassContext, EmptyProofs, EmptyConstraintMap, ClausesInfo,
- NewPredInfo0),
+ VarNameRemap, NewPredInfo0),
pred_info_set_typevarset(TypeVarSet, NewPredInfo0, NewPredInfo1),
module_info_get_predicate_table(ModuleInfo0, PredTable0),
Index: compiler/hlds_clauses.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/hlds_clauses.m,v
retrieving revision 1.9
diff -u -b -r1.9 hlds_clauses.m
--- compiler/hlds_clauses.m 26 Apr 2007 09:10:42 -0000 1.9
+++ compiler/hlds_clauses.m 15 May 2007 02:04:43 -0000
@@ -38,24 +38,25 @@
%
:- type clauses_info
---> clauses_info(
- varset :: prog_varset,
+ clauses_varset :: prog_varset,
+ % The varset describing the clauses.
- explicit_vartypes :: vartypes,
+ clauses_explicit_vartypes :: vartypes,
% Variable types from explicit
% qualifications.
- tvar_name_map :: tvar_name_map,
+ clauses_tvar_name_map :: tvar_name_map,
% Map from variable name to type
% variable for the type variables
% occurring in the argument types.
% This is used to process explicit
% type qualifications.
- vartypes :: vartypes,
+ clauses_vartypes :: vartypes,
% Variable types inferred by
% typecheck.m.
- headvars :: proc_arg_vector(prog_var),
+ clauses_headvars :: proc_arg_vector(prog_var),
% The head variables.
clauses_rep :: clauses_rep,
@@ -218,19 +219,19 @@
ClausesInfo = clauses_info(VarSet, VarTypes, TVarNameMap, VarTypes,
HeadVarVec, ClausesRep, RttiVarMaps, HasForeignClauses).
-clauses_info_get_varset(CI, CI ^ varset).
-clauses_info_get_explicit_vartypes(CI, CI ^ explicit_vartypes).
-clauses_info_get_vartypes(CI, CI ^ vartypes).
-clauses_info_get_headvars(CI, CI ^ headvars).
+clauses_info_get_varset(CI, CI ^ clauses_varset).
+clauses_info_get_explicit_vartypes(CI, CI ^ clauses_explicit_vartypes).
+clauses_info_get_vartypes(CI, CI ^ clauses_vartypes).
+clauses_info_get_headvars(CI, CI ^ clauses_headvars).
clauses_info_get_headvar_list(CI, List) :-
- List = proc_arg_vector_to_list(CI ^ headvars).
+ List = proc_arg_vector_to_list(CI ^ clauses_headvars).
clauses_info_get_clauses_rep(CI, CI ^ clauses_rep).
clauses_info_get_rtti_varmaps(CI, CI ^ clauses_rtti_varmaps).
-clauses_info_set_varset(X, CI, CI ^ varset := X).
-clauses_info_set_explicit_vartypes(X, CI, CI ^ explicit_vartypes := X).
-clauses_info_set_vartypes(X, CI, CI ^ vartypes := X).
-clauses_info_set_headvars(X, CI, CI ^ headvars := X).
+clauses_info_set_varset(X, CI, CI ^ clauses_varset := X).
+clauses_info_set_explicit_vartypes(X, CI, CI ^ clauses_explicit_vartypes := X).
+clauses_info_set_vartypes(X, CI, CI ^ clauses_vartypes := X).
+clauses_info_set_headvars(X, CI, CI ^ clauses_headvars := X).
clauses_info_set_clauses(X, CI, CI ^ clauses_rep := Rep) :-
set_clause_list(X, Rep).
clauses_info_set_clauses_rep(X, CI, CI ^ clauses_rep := X).
Index: compiler/hlds_out.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/hlds_out.m,v
retrieving revision 1.425
diff -u -b -r1.425 hlds_out.m
--- compiler/hlds_out.m 19 Jan 2007 07:04:14 -0000 1.425
+++ compiler/hlds_out.m 15 May 2007 23:23:50 -0000
@@ -771,8 +771,8 @@
pred_info_get_arg_types(PredInfo, ArgTypes),
pred_info_get_exist_quant_tvars(PredInfo, ExistQVars),
pred_info_get_typevarset(PredInfo, TVarSet),
- pred_info_clauses_info(PredInfo, ClausesInfo),
- pred_info_context(PredInfo, Context),
+ pred_info_get_clauses_info(PredInfo, ClausesInfo),
+ pred_info_get_context(PredInfo, Context),
pred_info_get_import_status(PredInfo, ImportStatus),
pred_info_get_markers(PredInfo, Markers),
pred_info_get_class_context(PredInfo, ClassContext),
@@ -780,6 +780,7 @@
pred_info_get_constraint_map(PredInfo, ConstraintMap),
pred_info_get_purity(PredInfo, Purity),
pred_info_get_head_type_params(PredInfo, HeadTypeParams),
+ pred_info_get_var_name_remap(PredInfo, VarNameRemap),
globals.io_lookup_string_option(dump_hlds_options, Verbose, !IO),
( string.contains_char(Verbose, 'v') ->
AppendVarNums = yes
@@ -855,6 +856,18 @@
),
write_var_types(Indent, VarSet, AppendVarNums, VarTypes, TVarSet, !IO),
+ map.to_assoc_list(VarNameRemap, VarNameRemapList),
+ (
+ VarNameRemapList = []
+ ;
+ VarNameRemapList = [VarNameRemapHead | VarNameRemapTail],
+ write_indent(Indent, !IO),
+ io.write_string("% var name remap: ", !IO),
+ write_var_name_remap(VarNameRemapHead, VarNameRemapTail, VarSet,
+ !IO),
+ io.nl(!IO)
+ ),
+
get_clause_list(ClausesRep, Clauses),
(
Clauses = [_ | _],
@@ -3117,6 +3130,23 @@
mercury_output_vars(VarSet, AppendVarNums, NewVars, !IO),
io.nl(!IO).
+:- pred write_var_name_remap(pair(prog_var, string)::in,
+ list(pair(prog_var, string))::in, prog_varset::in, io::di, io::uo) is det.
+
+write_var_name_remap(Head, Tail, VarSet, !IO) :-
+ Head = Var - NewName,
+ AppendVarNums = yes,
+ mercury_output_var(VarSet, AppendVarNums, Var, !IO),
+ io.write_string(" -> ", !IO),
+ io.write_string(NewName, !IO),
+ (
+ Tail = []
+ ;
+ Tail = [TailHead | TailTail],
+ io.write_string(", ", !IO),
+ write_var_name_remap(TailHead, TailTail, VarSet, !IO)
+ ).
+
%-----------------------------------------------------------------------------%
:- pred write_types(int::in, type_table::in, io::di, io::uo) is det.
@@ -3569,6 +3599,7 @@
proc_info_get_call_table_tip(Proc, MaybeCallTableTip),
proc_info_get_maybe_deep_profile_info(Proc, MaybeDeepProfileInfo),
proc_info_get_maybe_untuple_info(Proc, MaybeUntupleInfo),
+ proc_info_get_var_name_remap(Proc, VarNameRemap),
Indent1 = Indent + 1,
write_indent(Indent1, !IO),
@@ -3722,6 +3753,17 @@
MaybeUntupleInfo = no
),
+ map.to_assoc_list(VarNameRemap, VarNameRemapList),
+ (
+ VarNameRemapList = []
+ ;
+ VarNameRemapList = [VarNameRemapHead | VarNameRemapTail],
+ write_indent(Indent, !IO),
+ io.write_string("% var name remap: ", !IO),
+ write_var_name_remap(VarNameRemapHead, VarNameRemapTail, VarSet, !IO),
+ io.nl(!IO)
+ ),
+
write_indent(Indent, !IO),
PredName = predicate_name(ModuleInfo, PredId),
PredOrFunc = pred_info_is_pred_or_func(PredInfo),
Index: compiler/hlds_pred.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/hlds_pred.m,v
retrieving revision 1.224
diff -u -b -r1.224 hlds_pred.m
--- compiler/hlds_pred.m 19 Jan 2007 07:04:14 -0000 1.224
+++ compiler/hlds_pred.m 16 May 2007 03:55:03 -0000
@@ -493,7 +493,7 @@
% pred_info_init(ModuleName, SymName, Arity, PredOrFunc, Context,
% Origin, Status, GoalType, Markers, ArgTypes, TypeVarSet,
% ExistQVars, ClassContext, ClassProofs, ClassConstraintMap,
- % User, ClausesInfo, PredInfo)
+ % User, ClausesInfo, VarNameRemap, PredInfo)
%
% Return a pred_info whose fields are filled in from the information
% (direct and indirect) in the arguments, and from defaults.
@@ -502,11 +502,13 @@
pred_or_func::in, prog_context::in, pred_origin::in, import_status::in,
goal_type::in, pred_markers::in, list(mer_type)::in, tvarset::in,
existq_tvars::in, prog_constraints::in, constraint_proof_map::in,
- constraint_map::in, clauses_info::in, pred_info::out) is det.
+ constraint_map::in, clauses_info::in, map(prog_var, string)::in,
+ pred_info::out) is det.
% pred_info_create(ModuleName, SymName, PredOrFunc, Context, Origin,
% Status, Markers, TypeVarSet, ExistQVars, ArgTypes,
- % ClassContext, Assertions, User, ProcInfo, ProcId, PredInfo)
+ % ClassContext, Assertions, User, VarNameRemap, ProcInfo, ProcId,
+ % PredInfo)
%
% Return a pred_info whose fields are filled in from the information
% (direct and indirect) in the arguments, and from defaults. The given
@@ -516,11 +518,12 @@
:- pred pred_info_create(module_name::in, sym_name::in, pred_or_func::in,
prog_context::in, pred_origin::in, import_status::in, pred_markers::in,
list(mer_type)::in, tvarset::in, existq_tvars::in, prog_constraints::in,
- set(assert_id)::in, proc_info::in, proc_id::out, pred_info::out) is det.
+ set(assert_id)::in, map(prog_var, string)::in, proc_info::in,
+ proc_id::out, pred_info::out) is det.
% define_new_pred(Origin, Goal, CallGoal, Args, ExtraArgs,
% InstMap, PredName, TVarSet, VarTypes, ClassContext,
- % TVarMap, TCVarMap, VarSet, Markers, IsAddressTaken,
+ % TVarMap, TCVarMap, VarSet, Markers, IsAddressTaken, VarNameRemap,
% !ModuleInfo, PredProcId)
%
% Create a new predicate for the given goal, returning a goal to
@@ -533,7 +536,8 @@
instmap::in, string::in, tvarset::in, vartypes::in,
prog_constraints::in, rtti_varmaps::in, prog_varset::in,
inst_varset::in, pred_markers::in, is_address_taken::in,
- module_info::in, module_info::out, pred_proc_id::out) is det.
+ map(prog_var, string)::in, module_info::in, module_info::out,
+ pred_proc_id::out) is det.
% Various predicates for accessing the information stored in the
% pred_id and pred_info data structures.
@@ -558,7 +562,7 @@
%
:- func pred_info_is_pred_or_func(pred_info) = pred_or_func.
-:- pred pred_info_context(pred_info::in, prog_context::out) is det.
+:- pred pred_info_get_context(pred_info::in, prog_context::out) is det.
:- pred pred_info_get_origin(pred_info::in, pred_origin::out) is det.
:- pred pred_info_get_import_status(pred_info::in, import_status::out) is det.
:- pred pred_info_get_goal_type(pred_info::in, goal_type::out) is det.
@@ -580,8 +584,14 @@
constraint_map::out) is det.
:- pred pred_info_get_unproven_body_constraints(pred_info::in,
list(prog_constraint)::out) is det.
+:- pred pred_info_get_inst_graph_info(pred_info::in, inst_graph_info::out)
+ is det.
+:- pred pred_info_get_arg_modes_maps(pred_info::in, list(arg_modes_map)::out)
+ is det.
+:- pred pred_info_get_var_name_remap(pred_info::in,
+ map(prog_var, string)::out) is det.
:- pred pred_info_get_assertions(pred_info::in, set(assert_id)::out) is det.
-:- pred pred_info_clauses_info(pred_info::in, clauses_info::out) is det.
+:- pred pred_info_get_clauses_info(pred_info::in, clauses_info::out) is det.
:- pred pred_info_get_procedures(pred_info::in, proc_table::out) is det.
% Setting the name of a pred_info after its creation won't remove its name
@@ -622,6 +632,12 @@
pred_info::in, pred_info::out) is det.
:- pred pred_info_set_unproven_body_constraints(list(prog_constraint)::in,
pred_info::in, pred_info::out) is det.
+:- pred pred_info_set_inst_graph_info(inst_graph_info::in,
+ pred_info::in, pred_info::out) is det.
+:- pred pred_info_set_arg_modes_maps(list(arg_modes_map)::in,
+ pred_info::in, pred_info::out) is det.
+:- pred pred_info_set_var_name_remap(map(prog_var, string)::in,
+ pred_info::in, pred_info::out) is det.
:- pred pred_info_set_assertions(set(assert_id)::in,
pred_info::in, pred_info::out) is det.
:- pred pred_info_set_clauses_info(clauses_info::in,
@@ -629,42 +645,43 @@
:- pred pred_info_set_procedures(proc_table::in,
pred_info::in, pred_info::out) is det.
-:- func inst_graph_info(pred_info) = inst_graph_info.
-:- func 'inst_graph_info :='(pred_info, inst_graph_info) = pred_info.
-
% Mode information for the arguments of a procedure.
% The first map gives the instantiation state on entry of the
% node corresponding to the prog_var. The second map gives
% the instantation state on exit.
:- type arg_modes_map == pair(map(prog_var, bool)).
-:- func modes(pred_info) = list(arg_modes_map).
-:- func 'modes :='(pred_info, list(arg_modes_map)) = pred_info.
-
- % Return a list of all the proc_ids for the valid modes
- % of this predicate. This does not include candidate modes
- % that were generated during mode inference but which mode
- % inference found were not valid modes.
+ % Return a list of all the proc_ids for the valid modes of this predicate.
+ % This does not include candidate modes that were generated during mode
+ % inference but which mode inference found were not valid modes.
+ %
:- func pred_info_procids(pred_info) = list(proc_id).
- % Return a list of the proc_ids for all the modes
- % of this predicate, including invalid modes.
+ % Return a list of the proc_ids for all the modes of this predicate,
+ % including invalid modes.
+ %
:- func pred_info_all_procids(pred_info) = list(proc_id).
- % Return a list of the proc_ids for all the valid modes
- % of this predicate that are not imported.
+ % Return a list of the proc_ids for all the valid modes of this predicate
+ % that are not imported.
+ %
:- func pred_info_non_imported_procids(pred_info) = list(proc_id).
- % Return a list of the proc_ids for all the modes
- % of this predicate that are not imported
- % (including invalid modes).
+ % Return a list of the proc_ids for all the modes of this predicate
+ % that are not imported (including invalid modes).
+ %
+ % XXX The implementation of this function is currently identical
+ % to the implementation of pred_info_non_imported_procids.
+ %
:- func pred_info_all_non_imported_procids(pred_info) = list(proc_id).
- % Return a list of the proc_ids for all the valid modes
- % of this predicate that are exported.
+ % Return a list of the proc_ids for all the valid modes of this predicate
+ % that are exported.
+ %
:- func pred_info_exported_procids(pred_info) = list(proc_id).
% Remove a procedure from the pred_info.
+ %
:- pred pred_info_remove_procid(proc_id::in, pred_info::in, pred_info::out)
is det.
@@ -687,7 +704,8 @@
:- pred pred_info_is_pseudo_imported(pred_info::in) is semidet.
% pred_info_is_exported does *not* include predicates which are
- % exported_to_submodules or pseudo_exported
+ % exported_to_submodules or pseudo_exported.
+ %
:- pred pred_info_is_exported(pred_info::in) is semidet.
:- pred pred_info_is_opt_exported(pred_info::in) is semidet.
@@ -910,56 +928,21 @@
% polymorphically-typed arguments whose type depends on the
% values of those type_info-related variables;
% accurate GC for the MLDS back-end relies on this.
-:- type pred_info
- ---> pred_info(
- % Module in which pred occurs.
- module_name :: module_name,
-
- % Predicate name.
- name :: string,
-
- % The arity of the pred (*not* counting any inserted type_info
- % arguments).
- orig_arity :: arity,
-
- % Whether this "predicate" is really a predicate or a function.
- is_pred_or_func :: pred_or_func,
-
+:- type pred_sub_info
+ ---> pred_sub_info(
% The location (line #) of the :- pred decl.
context :: prog_context,
- % Where did the predicate come from.
- pred_origin :: pred_origin,
-
- import_status :: import_status,
-
% Whether the goals seen so far, if any, for this predicate
% are clauses or foreign_code(...) pragmas.
goal_type :: goal_type,
- % Various boolean flags.
- markers :: pred_markers,
-
% Various attributes.
attributes :: pred_attributes,
- % Argument types.
- arg_types :: list(mer_type),
-
- % Names of type vars in the predicate's type declaration.
- decl_typevarset :: tvarset,
-
- % Names of type vars in the predicate's type declaration
- % or in the variable type assignments.
- typevarset :: tvarset,
-
% Kinds of the type vars.
tvar_kinds :: tvar_kind_map,
- % The set of existentially quantified type variables in the
- % predicate's type declaration.
- exist_quant_tvars :: existq_tvars,
-
% The statically known bindings of existentially quantified
% type variables inside this predicate. This field is set
% at the end of the polymorphism stage.
@@ -973,10 +956,6 @@
% from the called predicates). Computed during type checking.
head_type_params :: head_type_params,
- % The class constraints on the type variables in the
- % predicate's type declaration.
- class_context :: prog_constraints,
-
% Explanations of how redundant constraints were eliminated.
% These are needed by polymorphism.m to work out where to get
% the typeclass_infos from. Computed during type checking.
@@ -998,19 +977,74 @@
% Mode information extracted from constraint based
% mode analysis.
- modes :: list(arg_modes_map),
+ arg_modes_maps :: list(arg_modes_map),
+
+ % Renames of some head variables computed by headvar_names.m,
+ % for use by the debugger.
+ var_name_remap :: map(prog_var, string),
% List of assertions which mention this predicate.
- assertions :: set(assert_id),
+ assertions :: set(assert_id)
+ ).
+
+:- type pred_info
+ ---> pred_info(
+ % Module in which pred occurs.
+ module_name :: module_name,
+
+ % Predicate name.
+ name :: string,
+
+ % The arity of the pred (*not* counting any inserted type_info
+ % arguments).
+ orig_arity :: arity,
+
+ % Whether this "predicate" is really a predicate or a function.
+ is_pred_or_func :: pred_or_func,
+
+ % Where did the predicate come from.
+ pred_origin :: pred_origin,
+
+ import_status :: import_status,
+
+ % Various boolean flags.
+ markers :: pred_markers,
+
+ % Argument types.
+ arg_types :: list(mer_type),
+
+ % Names of type vars in the predicate's type declaration.
+ decl_typevarset :: tvarset,
+
+ % Names of type vars in the predicate's type declaration
+ % or in the variable type assignments.
+ typevarset :: tvarset,
+
+ % The set of existentially quantified type variables in the
+ % predicate's type declaration.
+ exist_quant_tvars :: existq_tvars,
+
+ % The class constraints on the type variables in the
+ % predicate's type declaration.
+ class_context :: prog_constraints,
clauses_info :: clauses_info,
- procedures :: proc_table
+ procedures :: proc_table,
+
+ 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
+ % would cause Boehm gc to double the amount of memory allocated
+ % for a cell (since Boehm gc deals only with power-of-2 cell
+ % sizes).
).
pred_info_init(ModuleName, SymName, Arity, PredOrFunc, Context, Origin, Status,
GoalType, Markers, ArgTypes, TypeVarSet, ExistQVars, ClassContext,
- ClassProofs, ClassConstraintMap, ClausesInfo, PredInfo) :-
+ ClassProofs, ClassConstraintMap, ClausesInfo, VarNameRemap,
+ PredInfo) :-
PredName = unqualify_name(SymName),
sym_name_get_module_name(SymName, ModuleName, PredModuleName),
type_vars_list(ArgTypes, TVars),
@@ -1023,16 +1057,17 @@
UnprovenBodyConstraints = [],
set.init(Assertions),
map.init(Procs),
- PredInfo = pred_info(PredModuleName, PredName, Arity, PredOrFunc,
- Context, Origin, Status, GoalType, Markers, Attributes,
- ArgTypes, TypeVarSet, TypeVarSet, Kinds, ExistQVars, ExistQVarBindings,
- HeadTypeParams, ClassContext, ClassProofs, ClassConstraintMap,
+ PredSubInfo = pred_sub_info(Context, GoalType, Attributes, Kinds,
+ ExistQVarBindings, HeadTypeParams, ClassProofs, ClassConstraintMap,
UnprovenBodyConstraints, inst_graph_info_init, [],
- Assertions, ClausesInfo, Procs).
+ VarNameRemap, Assertions),
+ PredInfo = pred_info(PredModuleName, PredName, Arity, PredOrFunc,
+ Origin, Status, Markers, ArgTypes, TypeVarSet, TypeVarSet,
+ ExistQVars, ClassContext, ClausesInfo, Procs, PredSubInfo).
pred_info_create(ModuleName, SymName, PredOrFunc, Context, Origin, Status,
Markers, ArgTypes, TypeVarSet, ExistQVars, ClassContext,
- Assertions, ProcInfo, ProcId, PredInfo) :-
+ Assertions, VarNameRemap, ProcInfo, ProcId, PredInfo) :-
list.length(ArgTypes, Arity),
proc_info_get_varset(ProcInfo, VarSet),
proc_info_get_vartypes(ProcInfo, VarTypes),
@@ -1062,17 +1097,18 @@
next_mode_id(Procs0, ProcId),
map.det_insert(Procs0, ProcId, ProcInfo, Procs),
+ PredSubInfo = pred_sub_info(Context, goal_type_clause, Attributes, Kinds,
+ ExistQVarBindings, HeadTypeParams, ClassProofs, ClassConstraintMap,
+ UnprovenBodyConstraints, inst_graph_info_init, [],
+ VarNameRemap, Assertions),
PredInfo = pred_info(ModuleName, PredName, Arity, PredOrFunc,
- Context, Origin, Status, goal_type_clause, Markers, Attributes,
- ArgTypes, TypeVarSet, TypeVarSet, Kinds, ExistQVars, ExistQVarBindings,
- HeadTypeParams, ClassContext, ClassProofs, ClassConstraintMap,
- UnprovenBodyConstraints, inst_graph_info_init, [], Assertions,
- ClausesInfo, Procs).
-
-define_new_pred(Origin, Goal0, Goal, ArgVars0, ExtraTypeInfos,
- InstMap0, PredName, TVarSet, VarTypes0, ClassContext,
- RttiVarMaps, VarSet0, InstVarSet, Markers,
- IsAddressTaken, ModuleInfo0, ModuleInfo, PredProcId) :-
+ Origin, Status, Markers, ArgTypes, TypeVarSet, TypeVarSet,
+ ExistQVars, ClassContext, ClausesInfo, Procs, PredSubInfo).
+
+define_new_pred(Origin, Goal0, Goal, ArgVars0, ExtraTypeInfos, InstMap0,
+ PredName, TVarSet, VarTypes0, ClassContext, RttiVarMaps,
+ VarSet0, InstVarSet, Markers, IsAddressTaken, VarNameRemap,
+ ModuleInfo0, ModuleInfo, PredProcId) :-
Goal0 = hlds_goal(_GoalExpr, GoalInfo),
goal_info_get_instmap_delta(GoalInfo, InstMapDelta),
instmap.apply_instmap_delta(InstMap0, InstMapDelta, InstMap),
@@ -1125,16 +1161,16 @@
),
MaybeDeclaredDetism = no,
- proc_info_create(Context, VarSet, VarTypes, ArgVars, InstVarSet,
- ArgModes, MaybeDeclaredDetism, Detism, Goal0,
- RttiVarMaps, IsAddressTaken, ProcInfo0),
+ proc_info_create_with_declared_detism(Context, VarSet, VarTypes, ArgVars,
+ InstVarSet, ArgModes, MaybeDeclaredDetism, Detism, Goal0,
+ RttiVarMaps, IsAddressTaken, VarNameRemap, ProcInfo0),
proc_info_set_maybe_termination_info(TermInfo, ProcInfo0, ProcInfo),
set.init(Assertions),
pred_info_create(ModuleName, SymName, pf_predicate, Context, Origin,
ExportStatus, Markers, ArgTypes, TVarSet, ExistQVars,
- ClassContext, Assertions, ProcInfo, ProcId, PredInfo),
+ ClassContext, Assertions, VarNameRemap, ProcInfo, ProcId, PredInfo),
module_info_get_predicate_table(ModuleInfo0, PredTable0),
predicate_table_insert(PredInfo, PredId, PredTable0, PredTable),
@@ -1163,26 +1199,31 @@
pred_info_module(PI) = PI ^ module_name.
pred_info_name(PI) = PI ^ name.
pred_info_orig_arity(PI) = PI ^ orig_arity.
-
pred_info_is_pred_or_func(PI) = PI ^ is_pred_or_func.
-pred_info_context(PI, PI ^ context).
+
+pred_info_get_context(PI, PI ^ pred_sub_info ^ context).
pred_info_get_origin(PI, PI ^ pred_origin).
pred_info_get_import_status(PI, PI ^ import_status).
-pred_info_get_goal_type(PI, PI ^ goal_type).
+pred_info_get_goal_type(PI, PI ^ pred_sub_info ^ goal_type).
pred_info_get_markers(PI, PI ^ markers).
-pred_info_get_attributes(PI, PI ^ attributes).
+pred_info_get_attributes(PI, PI ^ pred_sub_info ^ attributes).
pred_info_get_arg_types(PI, PI ^ arg_types).
pred_info_get_typevarset(PI, PI ^ typevarset).
-pred_info_get_tvar_kinds(PI, PI ^ tvar_kinds).
+pred_info_get_tvar_kinds(PI, PI ^ pred_sub_info ^ tvar_kinds).
pred_info_get_exist_quant_tvars(PI, PI ^ exist_quant_tvars).
-pred_info_get_existq_tvar_binding(PI, PI ^ existq_tvar_binding).
-pred_info_get_head_type_params(PI, PI ^ head_type_params).
+pred_info_get_existq_tvar_binding(PI,
+ PI ^ pred_sub_info ^ existq_tvar_binding).
+pred_info_get_head_type_params(PI, PI ^ pred_sub_info ^ head_type_params).
pred_info_get_class_context(PI, PI ^ class_context).
-pred_info_get_constraint_proofs(PI, PI ^ constraint_proofs).
-pred_info_get_constraint_map(PI, PI ^ constraint_map).
-pred_info_get_unproven_body_constraints(PI, PI ^ unproven_body_constraints).
-pred_info_get_assertions(PI, PI ^ assertions).
-pred_info_clauses_info(PI, PI ^ clauses_info).
+pred_info_get_constraint_proofs(PI, PI ^ pred_sub_info ^ constraint_proofs).
+pred_info_get_constraint_map(PI, PI ^ pred_sub_info ^ constraint_map).
+pred_info_get_unproven_body_constraints(PI,
+ PI ^ pred_sub_info ^ unproven_body_constraints).
+pred_info_get_inst_graph_info(PI, PI ^ pred_sub_info ^ inst_graph_info).
+pred_info_get_arg_modes_maps(PI, PI ^ pred_sub_info ^ arg_modes_maps).
+pred_info_get_var_name_remap(PI, PI ^ pred_sub_info ^ var_name_remap).
+pred_info_get_assertions(PI, PI ^ pred_sub_info ^ assertions).
+pred_info_get_clauses_info(PI, PI ^ clauses_info).
pred_info_get_procedures(PI, PI ^ procedures).
pred_info_set_name(X, PI, PI ^ name := X).
@@ -1190,19 +1231,27 @@
pred_info_set_is_pred_or_func(X, PI, PI ^ is_pred_or_func := X).
pred_info_set_origin(X, PI, PI ^ pred_origin := X).
pred_info_set_import_status(X, PI, PI ^ import_status := X).
-pred_info_set_goal_type(X, PI, PI ^ goal_type := X).
+pred_info_set_goal_type(X, PI, PI ^ pred_sub_info ^ goal_type := X).
pred_info_set_markers(X, PI, PI ^ markers := X).
-pred_info_set_attributes(X, PI, PI ^ attributes := X).
+pred_info_set_attributes(X, PI, PI ^ pred_sub_info ^ attributes := X).
pred_info_set_typevarset(X, PI, PI ^ typevarset := X).
-pred_info_set_tvar_kinds(X, PI, PI ^ tvar_kinds := X).
-pred_info_set_existq_tvar_binding(X, PI, PI ^ existq_tvar_binding := X).
-pred_info_set_head_type_params(X, PI, PI ^ head_type_params := X).
+pred_info_set_tvar_kinds(X, PI, PI ^ pred_sub_info ^ tvar_kinds := X).
+pred_info_set_existq_tvar_binding(X, PI,
+ PI ^ pred_sub_info ^ existq_tvar_binding := X).
+pred_info_set_head_type_params(X, PI,
+ PI ^ pred_sub_info ^ head_type_params := X).
pred_info_set_class_context(X, PI, PI ^ class_context := X).
-pred_info_set_constraint_proofs(X, PI, PI ^ constraint_proofs := X).
-pred_info_set_constraint_map(X, PI, PI ^ constraint_map := X).
+pred_info_set_constraint_proofs(X, PI,
+ PI ^ pred_sub_info ^ constraint_proofs := X).
+pred_info_set_constraint_map(X, PI, PI ^ pred_sub_info ^ constraint_map := X).
pred_info_set_unproven_body_constraints(X, PI,
- PI ^ unproven_body_constraints := X).
-pred_info_set_assertions(X, PI, PI ^ assertions := X).
+ PI ^ pred_sub_info ^ unproven_body_constraints := X).
+pred_info_set_inst_graph_info(X, PI,
+ PI ^ pred_sub_info ^ inst_graph_info := X).
+pred_info_set_arg_modes_maps(X, PI,
+ PI ^ pred_sub_info ^ arg_modes_maps := X).
+pred_info_set_var_name_remap(X, PI, PI ^ pred_sub_info ^ var_name_remap := X).
+pred_info_set_assertions(X, PI, PI ^ pred_sub_info ^ assertions := X).
pred_info_set_clauses_info(X, PI, PI ^ clauses_info := X).
pred_info_set_procedures(X, PI, PI ^ procedures := X).
@@ -1224,29 +1273,54 @@
pred_info_non_imported_procids(PredInfo) = ProcIds :-
pred_info_get_import_status(PredInfo, ImportStatus),
- ( ImportStatus = status_imported(_) ->
- ProcIds = []
- ; ImportStatus = status_external(_) ->
+ (
+ ( ImportStatus = status_imported(_)
+ ; ImportStatus = status_external(_)
+ ),
ProcIds = []
- ; ImportStatus = status_pseudo_imported ->
+ ;
+ ImportStatus = status_pseudo_imported,
ProcIds0 = pred_info_procids(PredInfo),
- % for pseduo_imported preds, procid 0 is imported
+ % for pseudo_imported preds, procid 0 is imported
list.delete_all(ProcIds0, 0, ProcIds)
;
+ ( ImportStatus = status_opt_imported
+ ; ImportStatus = status_abstract_imported
+ ; ImportStatus = status_exported
+ ; ImportStatus = status_opt_exported
+ ; ImportStatus = status_abstract_exported
+ ; ImportStatus = status_pseudo_exported
+ ; ImportStatus = status_exported_to_submodules
+ ; ImportStatus = status_local
+ ),
ProcIds = pred_info_procids(PredInfo)
).
pred_info_all_non_imported_procids(PredInfo) = ProcIds :-
+ % XXX The documentation of this predicate says that the job it does
+ % is different from the job of pred_info_non_imported_procids, but
+ % the code is identical.
pred_info_get_import_status(PredInfo, ImportStatus),
- ( ImportStatus = status_imported(_) ->
- ProcIds = []
- ; ImportStatus = status_external(_) ->
+ (
+ ( ImportStatus = status_imported(_)
+ ; ImportStatus = status_external(_)
+ ),
ProcIds = []
- ; ImportStatus = status_pseudo_imported ->
+ ;
+ ImportStatus = status_pseudo_imported,
ProcIds0 = pred_info_procids(PredInfo),
- % for pseduo_imported preds, procid 0 is imported
+ % for pseudo_imported preds, procid 0 is imported
list.delete_all(ProcIds0, 0, ProcIds)
;
+ ( ImportStatus = status_opt_imported
+ ; ImportStatus = status_abstract_imported
+ ; ImportStatus = status_exported
+ ; ImportStatus = status_opt_exported
+ ; ImportStatus = status_abstract_exported
+ ; ImportStatus = status_pseudo_exported
+ ; ImportStatus = status_exported_to_submodules
+ ; ImportStatus = status_local
+ ),
ProcIds = pred_info_procids(PredInfo)
).
@@ -1256,14 +1330,20 @@
( ImportStatus = status_exported
; ImportStatus = status_opt_exported
; ImportStatus = status_exported_to_submodules
- )
- ->
+ ),
ProcIds = pred_info_procids(PredInfo)
;
- ImportStatus = status_pseudo_exported
- ->
+ ImportStatus = status_pseudo_exported,
ProcIds = [0]
;
+ ( ImportStatus = status_imported(_)
+ ; ImportStatus = status_opt_imported
+ ; ImportStatus = status_abstract_imported
+ ; ImportStatus = status_pseudo_imported
+ ; ImportStatus = status_abstract_exported
+ ; ImportStatus = status_local
+ ; ImportStatus = status_external(_)
+ ),
ProcIds = []
).
@@ -1356,10 +1436,12 @@
status_external(PredInfo0 ^ import_status).
pred_info_clause_goal_type(PredInfo) :-
- clause_goal_type(PredInfo ^ goal_type).
+ pred_info_get_goal_type(PredInfo, GoalType),
+ clause_goal_type(GoalType).
pred_info_pragma_goal_type(PredInfo) :-
- pragma_goal_type(PredInfo ^ goal_type).
+ pred_info_get_goal_type(PredInfo, GoalType),
+ pragma_goal_type(GoalType).
:- pred clause_goal_type(goal_type::in) is semidet.
@@ -1696,17 +1778,15 @@
:- pred proc_info_init(prog_context::in, arity::in, list(mer_type)::in,
maybe(list(mer_mode))::in, list(mer_mode)::in, maybe(list(is_live))::in,
- maybe(determinism)::in, is_address_taken::in, proc_info::out) is det.
-
-:- pred proc_info_create(prog_context::in, prog_varset::in, vartypes::in,
- list(prog_var)::in, inst_varset::in, list(mer_mode)::in,
- determinism::in, hlds_goal::in, rtti_varmaps::in,
- is_address_taken::in, proc_info::out) is det.
+ maybe(determinism)::in, is_address_taken::in, map(prog_var, string)::in,
+ proc_info::out) is det.
-:- pred proc_info_create(prog_context::in, prog_varset::in, vartypes::in,
- list(prog_var)::in, inst_varset::in, list(mer_mode)::in,
- maybe(determinism)::in, determinism::in, hlds_goal::in,
- rtti_varmaps::in, is_address_taken::in, proc_info::out) is det.
+:- pred proc_info_create(prog_context::in,
+ prog_varset::in, vartypes::in, list(prog_var)::in,
+ inst_varset::in, list(mer_mode)::in,
+ determinism::in, hlds_goal::in,
+ rtti_varmaps::in, is_address_taken::in, map(prog_var, string)::in,
+ proc_info::out) is det.
:- pred proc_info_set_body(prog_varset::in, vartypes::in,
list(prog_var)::in, hlds_goal::in, rtti_varmaps::in,
@@ -1757,6 +1837,8 @@
maybe(deep_profile_proc_info)::out) is det.
:- pred proc_info_get_maybe_untuple_info(proc_info::in,
maybe(untuple_proc_info)::out) is det.
+:- pred proc_info_get_var_name_remap(proc_info::in,
+ map(prog_var, string)::out) is det.
% Predicates to set fields of proc_infos.
@@ -1813,8 +1895,9 @@
:- pred proc_info_set_maybe_deep_profile_info(
maybe(deep_profile_proc_info)::in,
proc_info::in, proc_info::out) is det.
-:- pred proc_info_set_maybe_untuple_info(
- maybe(untuple_proc_info)::in,
+:- pred proc_info_set_maybe_untuple_info(maybe(untuple_proc_info)::in,
+ proc_info::in, proc_info::out) is det.
+:- pred proc_info_set_var_name_remap(map(prog_var, string)::in,
proc_info::in, proc_info::out) is det.
:- pred proc_info_get_termination2_info(proc_info::in,
@@ -2130,6 +2213,8 @@
% arguments in the original procedure.
maybe_untuple_info :: maybe(untuple_proc_info),
+ proc_var_name_remap :: map(prog_var, string),
+
% Structure sharing information as obtained by the structure
% sharing analysis.
structure_sharing :: structure_sharing_info,
@@ -2137,7 +2222,6 @@
% Structure reuse conditions obtained by the structure reuse
% analysis (CTGC).
structure_reuse :: structure_reuse_info
-
).
:- type structure_sharing_info
@@ -2205,7 +2289,7 @@
structure_reuse_info_init = structure_reuse_info(no, no).
proc_info_init(MContext, Arity, Types, DeclaredModes, Modes, MaybeArgLives,
- MaybeDet, IsAddressTaken, ProcInfo) :-
+ MaybeDet, IsAddressTaken, VarNameRemap, ProcInfo) :-
% Some parts of the procedure aren't known yet. We initialize them
% to any old garbage which we will later throw away.
@@ -2230,21 +2314,28 @@
ReuseInfo = structure_reuse_info_init,
ProcSubInfo = proc_sub_info(no, no, Term2Info, IsAddressTaken, StackSlots,
ArgInfo, InitialLiveness, no, no, no, no, no, no, no, no, no,
- SharingInfo, ReuseInfo),
+ VarNameRemap, SharingInfo, ReuseInfo),
ProcInfo = proc_info(MContext, BodyVarSet, BodyTypes, HeadVars, InstVarSet,
DeclaredModes, Modes, no, MaybeArgLives, MaybeDet, InferredDet,
ClauseBody, CanProcess, ModeErrors, RttiVarMaps, eval_normal,
ProcSubInfo).
-proc_info_create(Context, VarSet, VarTypes, HeadVars, InstVarSet,
- HeadModes, Detism, Goal, RttiVarMaps, IsAddressTaken, ProcInfo) :-
- proc_info_create(Context, VarSet, VarTypes, HeadVars, InstVarSet,
- HeadModes, yes(Detism), Detism, Goal, RttiVarMaps,
- IsAddressTaken, ProcInfo).
-
proc_info_create(Context, VarSet, VarTypes, HeadVars, InstVarSet, HeadModes,
- MaybeDeclaredDetism, Detism, Goal, RttiVarMaps, IsAddressTaken,
- ProcInfo) :-
+ Detism, Goal, RttiVarMaps, IsAddressTaken, VarNameRemap, ProcInfo) :-
+ proc_info_create_with_declared_detism(Context, VarSet, VarTypes, HeadVars,
+ InstVarSet, HeadModes, yes(Detism), Detism, Goal, RttiVarMaps,
+ IsAddressTaken, VarNameRemap, ProcInfo).
+
+:- pred proc_info_create_with_declared_detism(prog_context::in,
+ prog_varset::in, vartypes::in, list(prog_var)::in,
+ inst_varset::in, list(mer_mode)::in,
+ maybe(determinism)::in, determinism::in, hlds_goal::in,
+ rtti_varmaps::in, is_address_taken::in, map(prog_var, string)::in,
+ proc_info::out) is det.
+
+proc_info_create_with_declared_detism(Context, VarSet, VarTypes, HeadVars,
+ InstVarSet, HeadModes, MaybeDeclaredDetism, Detism, Goal, RttiVarMaps,
+ IsAddressTaken, VarNameRemap, ProcInfo) :-
map.init(StackSlots),
set.init(Liveness),
MaybeHeadLives = no,
@@ -2254,7 +2345,7 @@
ReuseInfo = structure_reuse_info_init,
ProcSubInfo = proc_sub_info(no, no, Term2Info, IsAddressTaken,
StackSlots, no, Liveness, no, no, no, no, no, no, no, no, no,
- SharingInfo, ReuseInfo),
+ VarNameRemap, SharingInfo, ReuseInfo),
ProcInfo = proc_info(Context, VarSet, VarTypes, HeadVars,
InstVarSet, no, HeadModes, no, MaybeHeadLives,
MaybeDeclaredDetism, Detism, Goal, yes, ModeErrors,
@@ -2300,8 +2391,8 @@
PI ^ proc_sub_info ^ maybe_special_return).
proc_info_get_maybe_deep_profile_info(PI,
PI ^ proc_sub_info ^ maybe_deep_profile_proc_info).
-proc_info_get_maybe_untuple_info(PI,
- PI ^ proc_sub_info ^ maybe_untuple_info).
+proc_info_get_maybe_untuple_info(PI, PI ^ proc_sub_info ^ maybe_untuple_info).
+proc_info_get_var_name_remap(PI, PI ^ proc_sub_info ^ proc_var_name_remap).
proc_info_set_varset(VS, PI, PI ^ prog_varset := VS).
proc_info_set_vartypes(VT, PI, PI ^ var_types := VT).
@@ -2344,6 +2435,8 @@
PI ^ proc_sub_info ^ maybe_deep_profile_proc_info := DPI).
proc_info_set_maybe_untuple_info(MUI, PI,
PI ^ proc_sub_info ^ maybe_untuple_info := MUI).
+proc_info_set_var_name_remap(VNR, PI,
+ PI ^ proc_sub_info ^ proc_var_name_remap := VNR).
proc_info_head_modes_constraint(ProcInfo, HeadModesConstraint) :-
MaybeHeadModesConstraint = ProcInfo ^ maybe_head_modes_constraint,
Index: compiler/intermod.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/intermod.m,v
retrieving revision 1.219
diff -u -b -r1.219 intermod.m
--- compiler/intermod.m 7 May 2007 05:21:30 -0000 1.219
+++ compiler/intermod.m 14 May 2007 15:58:15 -0000
@@ -229,7 +229,7 @@
map.lookup(PredTable0, PredId, PredInfo0),
module_info_get_type_spec_info(ModuleInfo0, TypeSpecInfo),
TypeSpecInfo = type_spec_info(_, TypeSpecForcePreds, _, _),
- pred_info_clauses_info(PredInfo0, ClausesInfo0),
+ pred_info_get_clauses_info(PredInfo0, ClausesInfo0),
(
clauses_info_get_explicit_vartypes(ClausesInfo0, ExplicitVarTypes),
map.is_empty(ExplicitVarTypes),
@@ -301,7 +301,7 @@
pred_info_get_import_status(PredInfo, status_local)
),
(
- pred_info_clauses_info(PredInfo, ClauseInfo),
+ pred_info_get_clauses_info(PredInfo, ClauseInfo),
clauses_info_clauses_only(ClauseInfo, Clauses),
[ProcId | _ProcIds] = pred_info_procids(PredInfo),
@@ -1491,7 +1491,7 @@
Name = pred_info_name(PredInfo),
PredOrFunc = pred_info_is_pred_or_func(PredInfo),
pred_info_get_arg_types(PredInfo, TVarSet, ExistQVars, ArgTypes),
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
pred_info_get_purity(PredInfo, Purity),
pred_info_get_class_context(PredInfo, ClassContext),
pred_info_get_goal_type(PredInfo, GoalType),
@@ -1592,7 +1592,7 @@
% The type specialization pragmas for exported preds should
% already be in the interface file.
- pred_info_clauses_info(PredInfo, ClausesInfo),
+ pred_info_get_clauses_info(PredInfo, ClausesInfo),
clauses_info_get_varset(ClausesInfo, VarSet),
clauses_info_get_headvar_list(ClausesInfo, HeadVars),
clauses_info_clauses_only(ClausesInfo, Clauses),
Index: compiler/lambda.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/lambda.m,v
retrieving revision 1.128
diff -u -b -r1.128 lambda.m
--- compiler/lambda.m 19 Jan 2007 07:04:16 -0000 1.128
+++ compiler/lambda.m 16 May 2007 01:07:35 -0000
@@ -481,9 +481,10 @@
% Now construct the proc_info and pred_info for the new single-mode
% predicate, using the information computed above.
- proc_info_create(LambdaContext, VarSet, VarTypes,
- AllArgVars, InstVarSet, AllArgModes, Detism,
- LambdaGoal, RttiVarMaps, address_is_taken, ProcInfo0),
+ map.init(VarNameRemap),
+ proc_info_create(LambdaContext, VarSet, VarTypes, AllArgVars,
+ InstVarSet, AllArgModes, Detism, LambdaGoal, RttiVarMaps,
+ address_is_taken, VarNameRemap, ProcInfo0),
% The debugger ignores unnamed variables.
ensure_all_headvars_are_named(ProcInfo0, ProcInfo1),
@@ -508,7 +509,7 @@
pred_info_create(ModuleName, PredName, PredOrFunc, LambdaContext,
origin_lambda(OrigFile, OrigLine, LambdaCount), status_local,
LambdaMarkers, ArgTypes, TVarSet, ExistQVars, Constraints,
- Assertions, ProcInfo, ProcId, PredInfo),
+ Assertions, VarNameRemap, ProcInfo, ProcId, PredInfo),
% Save the new predicate in the predicate table.
module_info_get_predicate_table(ModuleInfo1, PredicateTable0),
Index: compiler/loop_inv.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/loop_inv.m,v
retrieving revision 1.40
diff -u -b -r1.40 loop_inv.m
--- compiler/loop_inv.m 6 Jan 2007 09:23:40 -0000 1.40
+++ compiler/loop_inv.m 16 May 2007 01:08:23 -0000
@@ -776,6 +776,7 @@
proc_info_get_inst_varset(ProcInfo, InstVarSet),
pred_info_get_markers(PredInfo, Markers),
pred_info_get_origin(PredInfo, OrigOrigin),
+ pred_info_get_var_name_remap(PredInfo, VarNameRemap),
PredName = pred_info_name(PredInfo),
PredOrFunc = pred_info_is_pred_or_func(PredInfo),
@@ -812,6 +813,7 @@
Markers, % in - Markers for the new aux proc.
address_is_not_taken,
% in - The address of the new aux proc is not taken.
+ VarNameRemap, % in
ModuleInfo0,
ModuleInfo,
AuxPredProcId % out - The pred_proc_id for the new aux proc.
Index: compiler/mode_constraints.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/mode_constraints.m,v
retrieving revision 1.40
diff -u -b -r1.40 mode_constraints.m
--- compiler/mode_constraints.m 19 Jan 2007 07:04:22 -0000 1.40
+++ compiler/mode_constraints.m 15 May 2007 15:35:02 -0000
@@ -220,7 +220,7 @@
correct_nonlocals_in_pred(PredId, !ModuleInfo) :-
module_info_pred_info(!.ModuleInfo, PredId, PredInfo0),
some [!ClausesInfo, !Varset, !Vartypes, !Clauses, !Goals, !RttiVarMaps] (
- pred_info_clauses_info(PredInfo0, !:ClausesInfo),
+ pred_info_get_clauses_info(PredInfo0, !:ClausesInfo),
clauses_info_clauses_only(!.ClausesInfo, !:Clauses),
clauses_info_get_headvar_list(!.ClausesInfo, HeadVars),
clauses_info_get_varset(!.ClausesInfo, !:Varset),
@@ -369,9 +369,10 @@
fill_goal_path_slots_in_clauses(!.ModuleInfo, OmitModeEquivPrefix,
PredInfo0, PredInfo1),
- pred_info_clauses_info(PredInfo1, ClausesInfo0),
+ pred_info_get_clauses_info(PredInfo1, ClausesInfo0),
clauses_info_get_headvar_list(ClausesInfo0, HeadVars),
- InstGraph = PredInfo1 ^ inst_graph_info ^ implementation_inst_graph,
+ pred_info_get_inst_graph_info(PredInfo1, InstGraphInfo),
+ InstGraph = InstGraphInfo ^ implementation_inst_graph,
inst_graph.foldl_reachable_from_list(
( pred(V::in, S0::in, S::out) is det :-
mode_constraint_var(in(V), _, S0, S1),
@@ -599,9 +600,10 @@
PredId, !.ModuleInfo, !IO),
io.flush_output(!IO),
- InstGraph = PredInfo0 ^ inst_graph_info ^ implementation_inst_graph,
+ pred_info_get_inst_graph_info(PredInfo0, InstGraphInfo),
+ InstGraph = InstGraphInfo ^ implementation_inst_graph,
pred_info_get_procedures(PredInfo0, ProcTable0),
- pred_info_clauses_info(PredInfo0, ClausesInfo0),
+ pred_info_get_clauses_info(PredInfo0, ClausesInfo0),
clauses_info_get_headvar_list(ClausesInfo0, HeadVars),
HOModes0 = map.init,
@@ -650,8 +652,9 @@
!ModuleInfo, !IO) :-
module_info_pred_info(!.ModuleInfo, PredId, PredInfo0),
- InstGraph = PredInfo0 ^ inst_graph_info ^ implementation_inst_graph,
- pred_info_clauses_info(PredInfo0, ClausesInfo),
+ pred_info_get_inst_graph_info(PredInfo0, InstGraphInfo),
+ InstGraph = InstGraphInfo ^ implementation_inst_graph,
+ pred_info_get_clauses_info(PredInfo0, ClausesInfo),
clauses_info_get_headvar_list(ClausesInfo, HeadVars),
% DMO document this better
@@ -659,7 +662,7 @@
% as an ROBDD instead.
solutions(arg_modes_map(HeadVars, InstGraph, ModeConstraint,
ModeConstraintInfo0), Modes),
- PredInfo = PredInfo0 ^ modes := Modes,
+ pred_info_set_arg_modes_maps(Modes, PredInfo0, PredInfo),
% PredInfo = PredInfo0,
% DEBUGGING CODE
@@ -1257,7 +1260,7 @@
% This is a recursive call.
% XXX we currently assume that all recursive calls are to the
% same mode of the predicate.
- pred_info_clauses_info(PredInfo, ClausesInfo),
+ pred_info_get_clauses_info(PredInfo, ClausesInfo),
clauses_info_get_headvar_list(ClausesInfo, HeadVars),
call_constraints(GoalPath, PredId, HeadVars, Args,
!Constraint, !GCInfo)
@@ -1279,12 +1282,12 @@
CallConstraint, !GCInfo)
;
- % The called predicate is from a lower (i.e. already
- % mode-analysed) SCC, but does not have any mode
- % declarations.
- ArgModes = PredInfo ^ modes,
- PredInstGraph = PredInfo ^ inst_graph_info ^ interface_inst_graph,
- pred_info_clauses_info(PredInfo, PredClausesInfo),
+ % The called predicate is from a lower (i.e. already mode-analysed)
+ % SCC, but does not have any mode declarations.
+ pred_info_get_arg_modes_maps(PredInfo, ArgModes),
+ pred_info_get_inst_graph_info(PredInfo, InstGraphInfo),
+ PredInstGraph = InstGraphInfo ^ interface_inst_graph,
+ pred_info_get_clauses_info(PredInfo, PredClausesInfo),
clauses_info_get_headvar_list(PredClausesInfo, PredHeadVars),
solutions((pred((V - W)::out) is nondet :-
inst_graph.corresponding_nodes_from_lists(
Index: compiler/mode_errors.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/mode_errors.m,v
retrieving revision 1.114
diff -u -b -r1.114 mode_errors.m
--- compiler/mode_errors.m 19 Jan 2007 07:04:22 -0000 1.114
+++ compiler/mode_errors.m 14 May 2007 16:12:53 -0000
@@ -404,14 +404,12 @@
mode_error_conj_to_spec(ModeInfo, Errors, Culprit) = Spec :-
mode_info_get_context(ModeInfo, Context),
- mode_info_get_varset(ModeInfo, VarSet),
-
(
Errors = [],
unexpected(this_file, "mode_error_conj_to_spec: no errors")
;
Errors = [Error],
- Msgs1 = mode_error_conjunct_to_msgs(VarSet, Context, ModeInfo, Error)
+ Msgs1 = mode_error_conjunct_to_msgs(Context, ModeInfo, Error)
;
Errors = [_, _ | _],
% If there's more than one error, we use the setting of
@@ -429,11 +427,11 @@
% In the absence of --verbose-errors, report only one error.
% We prefer that this be an important error.
( ImportantErrors = [FirstImportantError | _] ->
- ConjMsgs = mode_error_conjunct_to_msgs(VarSet, Context,
- ModeInfo, FirstImportantError)
+ ConjMsgs = mode_error_conjunct_to_msgs(Context, ModeInfo,
+ FirstImportantError)
; OtherErrors = [FirstOtherError | _] ->
- ConjMsgs = mode_error_conjunct_to_msgs(VarSet, Context,
- ModeInfo, FirstOtherError)
+ ConjMsgs = mode_error_conjunct_to_msgs(Context, ModeInfo,
+ FirstOtherError)
;
unexpected(this_file,
"mode_error_conj_to_spec: no errors of any kind")
@@ -452,7 +450,7 @@
Msgs1Start = [simple_msg(Context,
[always(Preamble ++ ConjPieces)])],
Msgs1Rest = list.map(
- mode_error_conjunct_to_msgs(VarSet, Context, ModeInfo),
+ mode_error_conjunct_to_msgs(Context, ModeInfo),
ImportantErrors ++ OtherErrors),
Msgs1 = Msgs1Start ++ list.condense(Msgs1Rest)
)
@@ -502,12 +500,13 @@
true
).
-:- func mode_error_conjunct_to_msgs(prog_varset, prog_context, mode_info,
- delayed_goal) = list(error_msg).
+:- func mode_error_conjunct_to_msgs(prog_context, mode_info, delayed_goal)
+ = list(error_msg).
-mode_error_conjunct_to_msgs(VarSet, Context, !.ModeInfo, DelayedGoal) = Msgs :-
+mode_error_conjunct_to_msgs(Context, !.ModeInfo, DelayedGoal) = Msgs :-
DelayedGoal = delayed_goal(Vars, Error, Goal),
set.to_sorted_list(Vars, VarList),
+ mode_info_get_varset(!.ModeInfo, VarSet),
Pieces1 = [words("Floundered goal, waiting on {"),
words(mercury_vars_to_string(VarSet, no, VarList)),
words("}:"), nl],
@@ -1176,7 +1175,7 @@
;
InferModesOpt = no,
io.set_exit_status(1, !IO),
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
MainPieces = [words("Error: no mode declaration for")] ++
describe_one_pred_name(!.ModuleInfo, should_not_module_qualify,
PredId) ++ [suffix("."), nl],
@@ -1192,7 +1191,7 @@
)
;
io.set_exit_status(1, !IO),
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
Pieces = [words("Error: no mode declaration for exported")] ++
describe_one_pred_name(!.ModuleInfo, should_module_qualify, PredId)
++ [suffix("."), nl],
@@ -1260,7 +1259,7 @@
!IO) :-
PredName = pred_info_name(PredInfo),
Name = unqualified(PredName),
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
PredArity = pred_info_orig_arity(PredInfo),
some [!ArgModes, !MaybeDet] (
proc_info_get_argmodes(ProcInfo, !:ArgModes),
Index: compiler/mode_info.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/mode_info.m,v
retrieving revision 1.93
diff -u -b -r1.93 mode_info.m
--- compiler/mode_info.m 15 Jan 2007 10:30:32 -0000 1.93
+++ compiler/mode_info.m 15 May 2007 02:06:39 -0000
@@ -282,6 +282,7 @@
:- import_module check_hlds.delay_info.
:- import_module check_hlds.mode_errors.
+:- import_module hlds.hlds_clauses.
:- import_module libs.
:- import_module libs.compiler_util.
:- import_module libs.globals.
@@ -471,9 +472,9 @@
NeedToRequantify = no,
InNegatedContext = no,
- ModeSubInfo = mode_sub_info(ProcId, VarSet, Unreachable, Changed,
- CheckingExtraGoals, InstMapping0, WarningList, NeedToRequantify,
- InNegatedContext, no, no),
+ ModeSubInfo = mode_sub_info(ProcId, VarSet, Unreachable,
+ Changed, CheckingExtraGoals, InstMapping0, WarningList,
+ NeedToRequantify, InNegatedContext, no, no),
ModeInfo = mode_info(ModuleInfo, PredId, VarTypes, Debug,
Context, ModeContext, InstMapping0, LockedVars, DelayInfo,
Index: compiler/mode_ordering.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/mode_ordering.m,v
retrieving revision 1.21
diff -u -b -r1.21 mode_ordering.m
--- compiler/mode_ordering.m 6 Jan 2007 10:56:16 -0000 1.21
+++ compiler/mode_ordering.m 15 May 2007 15:24:43 -0000
@@ -130,7 +130,8 @@
pred_info_proc_info(!.PredInfo, ProcId, ProcInfo0),
proc_info_head_modes_constraint(ProcInfo0, ModeDeclConstraint),
Constraint = Constraint0 * ModeDeclConstraint,
- InstGraph = !.PredInfo ^ inst_graph_info ^ implementation_inst_graph,
+ pred_info_get_inst_graph_info(!.PredInfo, InstGraphInfo),
+ InstGraph = InstGraphInfo ^ implementation_inst_graph,
mode_ordering.proc(InstGraph, Constraint, ModeConstraintInfo,
ModuleInfo, PredConstraintMap, ProcInfo0, ProcInfo),
pred_info_set_proc_info(ProcId, ProcInfo, !PredInfo).
@@ -505,7 +506,8 @@
lookup_pred_constraint(PredConstraintMap, PredId, _, MCInfo),
module_info_pred_info(ModuleInfo, PredId, PredInfo),
- CalleeInstGraph = PredInfo^inst_graph_info^interface_inst_graph,
+ pred_info_get_inst_graph_info(PredInfo, CalleeInstGraphInfo),
+ CalleeInstGraph = CalleeInstGraphInfo ^ interface_inst_graph,
pred_info_get_procedures(PredInfo, ProcTable),
map.to_assoc_list(ProcTable, ProcList),
(
Index: compiler/modecheck_call.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/modecheck_call.m,v
retrieving revision 1.78
diff -u -b -r1.78 modecheck_call.m
--- compiler/modecheck_call.m 19 Jan 2007 07:04:23 -0000 1.78
+++ compiler/modecheck_call.m 14 May 2007 15:53:31 -0000
@@ -452,7 +452,7 @@
mode_info_get_module_info(!.ModeInfo, ModuleInfo0),
module_info_preds(ModuleInfo0, Preds0),
map.lookup(Preds0, PredId, PredInfo0),
- pred_info_context(PredInfo0, Context),
+ pred_info_get_context(PredInfo0, Context),
list.length(ArgVars, Arity),
list.duplicate(Arity, not_reached, FinalInsts),
inst_lists_to_mode_list(InitialInsts, FinalInsts, Modes),
Index: compiler/modes.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/modes.m,v
retrieving revision 1.355
diff -u -b -r1.355 modes.m
--- compiler/modes.m 19 Jan 2007 07:04:23 -0000 1.355
+++ compiler/modes.m 14 May 2007 15:53:41 -0000
@@ -773,7 +773,7 @@
% We use the context of the first clause, unless there weren't any clauses
% at all, in which case we use the context of the mode declaration.
module_info_pred_info(!.ModuleInfo, PredId, PredInfo),
- pred_info_clauses_info(PredInfo, ClausesInfo),
+ pred_info_get_clauses_info(PredInfo, ClausesInfo),
clauses_info_clauses_only(ClausesInfo, ClauseList),
(
ClauseList = [FirstClause | _],
@@ -2609,7 +2609,7 @@
mode_info_get_module_info(!.ModeInfo, ModuleInfo),
mode_info_get_predid(!.ModeInfo, PredId),
module_info_pred_info(ModuleInfo, PredId, PredInfo),
- pred_info_clauses_info(PredInfo, ClausesInfo),
+ pred_info_get_clauses_info(PredInfo, ClausesInfo),
clauses_info_get_headvar_list(ClausesInfo, HeadVars),
filter_headvar_unification_goals(HeadVars, DelayedGoals0,
HeadVarUnificationGoals, NonHeadVarUnificationGoals0),
Index: compiler/ordering_mode_constraints.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/ordering_mode_constraints.m,v
retrieving revision 1.14
diff -u -b -r1.14 ordering_mode_constraints.m
--- compiler/ordering_mode_constraints.m 6 Jan 2007 10:56:16 -0000 1.14
+++ compiler/ordering_mode_constraints.m 14 May 2007 15:53:48 -0000
@@ -721,7 +721,7 @@
(
ProcIds = [],
- pred_info_clauses_info(PredInfo, ClausesInfo),
+ pred_info_get_clauses_info(PredInfo, ClausesInfo),
clauses_info_clauses_only(ClausesInfo, Clauses),
Goals = list.map(func(Clause) = clause_body(Clause), Clauses),
Indent = 0,
Index: compiler/pd_info.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/pd_info.m,v
retrieving revision 1.33
diff -u -b -r1.33 pd_info.m
--- compiler/pd_info.m 19 Jan 2007 07:04:25 -0000 1.33
+++ compiler/pd_info.m 16 May 2007 01:08:46 -0000
@@ -642,11 +642,12 @@
proc_info_get_vartypes(ProcInfo, VarTypes),
proc_info_get_rtti_varmaps(ProcInfo, RttiVarMaps),
proc_info_get_inst_varset(ProcInfo, InstVarSet),
+ proc_info_get_var_name_remap(ProcInfo, VarNameRemap),
% XXX handle the extra typeinfo arguments for
% --typeinfo-liveness properly.
hlds_pred.define_new_pred(Origin, Goal, CallGoal, Args, _ExtraArgs,
InstMap, Name, TVarSet, VarTypes, ClassContext, RttiVarMaps,
- VarSet, InstVarSet, Markers, address_is_not_taken,
+ VarSet, InstVarSet, Markers, address_is_not_taken, VarNameRemap,
ModuleInfo0, ModuleInfo, PredProcId),
pd_info_set_module_info(ModuleInfo, !PDInfo).
Index: compiler/polymorphism.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/polymorphism.m,v
retrieving revision 1.318
diff -u -b -r1.318 polymorphism.m
--- compiler/polymorphism.m 19 Jan 2007 07:04:26 -0000 1.318
+++ compiler/polymorphism.m 15 May 2007 01:57:43 -0000
@@ -462,7 +462,7 @@
%
module_info_preds(!.ModuleInfo, PredTable0),
map.lookup(PredTable0, PredId, PredInfo0),
- pred_info_clauses_info(PredInfo0, ClausesInfo0),
+ pred_info_get_clauses_info(PredInfo0, ClausesInfo0),
clauses_info_get_vartypes(ClausesInfo0, VarTypes0),
clauses_info_get_headvars(ClausesInfo0, HeadVars),
@@ -535,7 +535,7 @@
% goals, varsets, types, etc., and computing some information in the
% poly_info.
- pred_info_clauses_info(PredInfo0, ClausesInfo0),
+ pred_info_get_clauses_info(PredInfo0, ClausesInfo0),
polymorphism_process_clause_info(PredInfo0, !.ModuleInfo,
ClausesInfo0, ClausesInfo, Info, ExtraArgModes),
poly_info_get_module_info(Info, !:ModuleInfo),
Index: compiler/post_typecheck.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/post_typecheck.m,v
retrieving revision 1.118
diff -u -b -r1.118 post_typecheck.m
--- compiler/post_typecheck.m 19 Jan 2007 07:04:26 -0000 1.118
+++ compiler/post_typecheck.m 14 May 2007 15:54:36 -0000
@@ -236,7 +236,7 @@
NumErrors = 0
),
- pred_info_clauses_info(!.PredInfo, ClausesInfo0),
+ pred_info_get_clauses_info(!.PredInfo, ClausesInfo0),
pred_info_get_head_type_params(!.PredInfo, HeadTypeParams),
clauses_info_get_varset(ClausesInfo0, VarSet),
clauses_info_get_vartypes(ClausesInfo0, VarTypesMap0),
@@ -343,7 +343,7 @@
report_unsatisfied_constraints(ModuleInfo, PredId, PredInfo, Constraints,
!Specs) :-
pred_info_get_typevarset(PredInfo, TVarSet),
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
PredIdPieces = describe_one_pred_name(ModuleInfo,
should_not_module_qualify, PredId),
@@ -376,7 +376,7 @@
report_unresolved_type_warning(ModuleInfo, PredId, PredInfo, VarSet, Errs,
!Specs) :-
pred_info_get_typevarset(PredInfo, TypeVarSet),
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
PredIdPieces =
describe_one_pred_name(ModuleInfo, should_not_module_qualify, PredId),
@@ -425,7 +425,7 @@
% have the specified name and arity.
pred_info_get_typevarset(CallerPredInfo, TVarSet),
pred_info_get_markers(CallerPredInfo, Markers),
- pred_info_clauses_info(CallerPredInfo, ClausesInfo),
+ pred_info_get_clauses_info(CallerPredInfo, ClausesInfo),
clauses_info_get_vartypes(ClausesInfo, VarTypes),
map.apply_to_list(Args0, VarTypes, ArgTypes),
resolve_pred_overloading(ModuleInfo, Markers, ArgTypes, TVarSet,
@@ -481,7 +481,7 @@
( pred_info_is_pseudo_imported(!.PredInfo) ->
true
;
- pred_info_clauses_info(!.PredInfo, ClausesInfo0),
+ pred_info_get_clauses_info(!.PredInfo, ClausesInfo0),
clauses_info_get_headvar_list(ClausesInfo0, HeadVars),
pred_info_get_arg_types(!.PredInfo, ArgTypes),
map.from_corresponding_lists(HeadVars, ArgTypes, VarTypes),
@@ -555,7 +555,7 @@
promise_ex_goal(ModuleInfo, ExclusiveDeclPredId, Goal) :-
module_info_pred_info(ModuleInfo, ExclusiveDeclPredId, PredInfo),
- pred_info_clauses_info(PredInfo, ClausesInfo),
+ pred_info_get_clauses_info(PredInfo, ClausesInfo),
clauses_info_clauses_only(ClausesInfo, Clauses),
( Clauses = [clause(_ProcIds, Goal0, _Lang, _Context)] ->
assertion.normalise_goal(Goal0, Goal)
@@ -660,7 +660,7 @@
RHS = rhs_var(_)
;
RHS = rhs_functor(ConsId, _, _),
- pred_info_clauses_info(PredInfo, ClausesInfo),
+ pred_info_get_clauses_info(PredInfo, ClausesInfo),
clauses_info_get_vartypes(ClausesInfo, VarTypes),
map.lookup(VarTypes, Var, Type),
( type_to_ctor_and_args(Type, TypeCtor, _) ->
@@ -736,7 +736,7 @@
->
true
;
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
Pieces = [words("Error: arguments of main/2"),
words("must have type `io.state'."), nl],
Msg = simple_msg(Context, [always(Pieces)]),
Index: compiler/proc_gen.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/proc_gen.m,v
retrieving revision 1.18
diff -u -b -r1.18 proc_gen.m
--- compiler/proc_gen.m 19 Jan 2007 07:04:26 -0000 1.18
+++ compiler/proc_gen.m 16 May 2007 08:54:34 -0000
@@ -324,7 +324,7 @@
OutsideResumePoint, TraceSlotInfo, CodeInfo0),
% Find out the approriate context for the predicate's interface events.
- pred_info_clauses_info(PredInfo, ClausesInfo),
+ pred_info_get_clauses_info(PredInfo, ClausesInfo),
get_clause_list(ClausesInfo ^ clauses_rep, Clauses),
(
Clauses = [],
Index: compiler/prop_mode_constraints.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/prop_mode_constraints.m,v
retrieving revision 1.16
diff -u -b -r1.16 prop_mode_constraints.m
--- compiler/prop_mode_constraints.m 6 Jan 2007 09:23:49 -0000 1.16
+++ compiler/prop_mode_constraints.m 14 May 2007 15:54:42 -0000
@@ -236,7 +236,7 @@
ensure_unique_arguments(PredId, !ModuleInfo) :-
module_info_pred_info(!.ModuleInfo, PredId, PredInfo0),
- pred_info_clauses_info(PredInfo0, ClausesInfo0),
+ pred_info_get_clauses_info(PredInfo0, ClausesInfo0),
clauses_info_clauses_only(ClausesInfo0, Clauses0),
clauses_info_get_varset(ClausesInfo0, Varset0),
clauses_info_get_vartypes(ClausesInfo0, Vartypes0),
Index: compiler/purity.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/purity.m,v
retrieving revision 1.111
diff -u -b -r1.111 purity.m
--- compiler/purity.m 19 Jan 2007 07:04:29 -0000 1.111
+++ compiler/purity.m 14 May 2007 15:55:01 -0000
@@ -290,7 +290,7 @@
pred_info_get_purity(!.PredInfo, DeclPurity) ,
pred_info_get_promised_purity(!.PredInfo, PromisedPurity),
some [!ClausesInfo] (
- pred_info_clauses_info(!.PredInfo, !:ClausesInfo),
+ pred_info_get_clauses_info(!.PredInfo, !:ClausesInfo),
clauses_info_clauses(Clauses0, !ClausesInfo),
clauses_info_get_vartypes(!.ClausesInfo, VarTypes0),
clauses_info_get_varset(!.ClausesInfo, VarSet0),
@@ -974,7 +974,7 @@
= error_spec.
error_inconsistent_promise(ModuleInfo, PredInfo, PredId, Purity) = Spec :-
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
PredOrFunc = pred_info_is_pred_or_func(PredInfo),
PredOrFuncStr = pred_or_func_to_full_str(PredOrFunc),
purity_name(Purity, PurityName),
@@ -995,7 +995,7 @@
warn_exaggerated_impurity_decl(ModuleInfo, PredInfo, PredId,
DeclPurity, ActualPurity) = Spec :-
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
PredContextPieces = pred_context(ModuleInfo, PredInfo, PredId),
purity_name(DeclPurity, DeclPurityName),
purity_name(ActualPurity, ActualPurityName),
@@ -1010,7 +1010,7 @@
warn_unnecessary_promise_pure(ModuleInfo, PredInfo, PredId, PromisedPurity)
= Spec :-
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
PredContextPieces = pred_context(ModuleInfo, PredInfo, PredId),
(
PromisedPurity = purity_pure,
@@ -1040,7 +1040,7 @@
= error_spec.
error_inferred_impure(ModuleInfo, PredInfo, PredId, Purity) = Spec :-
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
PredOrFunc = pred_info_is_pred_or_func(PredInfo),
PredOrFuncStr = pred_or_func_to_full_str(PredOrFunc),
PredContextPieces = pred_context(ModuleInfo, PredInfo, PredId),
Index: compiler/simplify.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/simplify.m,v
retrieving revision 1.209
diff -u -b -r1.209 simplify.m
--- compiler/simplify.m 7 May 2007 05:21:36 -0000 1.209
+++ compiler/simplify.m 16 May 2007 08:52:39 -0000
@@ -167,6 +167,7 @@
:- import_module string.
:- import_module term.
:- import_module varset.
+:- import_module svvarset.
%-----------------------------------------------------------------------------%
@@ -421,7 +422,14 @@
simplify_process_clause_body_goal(Goal1, Goal, Info0, Info, !IO),
- simplify_info_get_varset(Info, VarSet),
+ simplify_info_get_varset(Info, VarSet1),
+ ( simplify_do_after_front_end(Info) ->
+ proc_info_get_var_name_remap(!.ProcInfo, VarNameRemap),
+ map.foldl(svvarset.name_var, VarNameRemap, VarSet1, VarSet),
+ proc_info_set_var_name_remap(map.init, !ProcInfo)
+ ;
+ VarSet = VarSet1
+ ),
simplify_info_get_var_types(Info, VarTypes),
simplify_info_get_rtti_varmaps(Info, RttiVarMaps),
proc_info_set_varset(VarSet, !ProcInfo),
Index: compiler/structure_reuse.analysis.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/structure_reuse.analysis.m,v
retrieving revision 1.8
diff -u -b -r1.8 structure_reuse.analysis.m
--- compiler/structure_reuse.analysis.m 19 Jan 2007 07:04:31 -0000 1.8
+++ compiler/structure_reuse.analysis.m 14 May 2007 15:57:30 -0000
@@ -315,7 +315,7 @@
PredOrFunc = pred_info_is_pred_or_func(PredInfo),
ModuleName = pred_info_module(PredInfo),
pred_info_get_procedures(PredInfo, ProcTable),
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
SymName = qualified(ModuleName, PredName),
pred_info_get_typevarset(PredInfo, TypeVarSet),
list.foldl(write_proc_reuse_info(ProcTable, PredOrFunc, SymName,
Index: compiler/structure_reuse.versions.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/structure_reuse.versions.m,v
retrieving revision 1.6
diff -u -b -r1.6 structure_reuse.versions.m
--- compiler/structure_reuse.versions.m 6 Jan 2007 09:23:53 -0000 1.6
+++ compiler/structure_reuse.versions.m 16 May 2007 01:06:31 -0000
@@ -144,7 +144,7 @@
ReusePredInfo, ReuseProcId):-
ModuleName = pred_info_module(PredInfo),
PredOrFunc = pred_info_is_pred_or_func(PredInfo),
- pred_info_context(PredInfo, ProgContext),
+ pred_info_get_context(PredInfo, ProgContext),
pred_info_get_origin(PredInfo, PredOrigin),
pred_info_get_import_status(PredInfo, ImportStatus),
pred_info_get_markers(PredInfo, PredMarkers),
@@ -153,10 +153,11 @@
pred_info_get_exist_quant_tvars(PredInfo, ExistQTVars),
pred_info_get_class_context(PredInfo, ProgConstraints),
pred_info_get_assertions(PredInfo, AssertIds),
+ pred_info_get_var_name_remap(PredInfo, VarNameRemap),
pred_info_create(ModuleName, ReusePredName, PredOrFunc, ProgContext,
PredOrigin, ImportStatus, PredMarkers, MerTypes, TVarset,
- ExistQTVars, ProgConstraints, AssertIds, ProcInfo, ReuseProcId,
- ReusePredInfo).
+ ExistQTVars, ProgConstraints, AssertIds, VarNameRemap,
+ ProcInfo, ReuseProcId, ReusePredInfo).
%------------------------------------------------------------------------------%
Index: compiler/structure_sharing.analysis.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/structure_sharing.analysis.m,v
retrieving revision 1.21
diff -u -b -r1.21 structure_sharing.analysis.m
--- compiler/structure_sharing.analysis.m 19 Jan 2007 07:04:31 -0000 1.21
+++ compiler/structure_sharing.analysis.m 14 May 2007 15:57:42 -0000
@@ -645,7 +645,7 @@
PredOrFunc = pred_info_is_pred_or_func(PredInfo),
ModuleName = pred_info_module(PredInfo),
pred_info_get_procedures(PredInfo, ProcTable),
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
SymName = qualified(ModuleName, PredName),
pred_info_get_typevarset(PredInfo, TypeVarSet),
list.foldl(
Index: compiler/table_gen.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/table_gen.m,v
retrieving revision 1.132
diff -u -b -r1.132 table_gen.m
--- compiler/table_gen.m 19 Jan 2007 07:04:32 -0000 1.132
+++ compiler/table_gen.m 16 May 2007 01:09:29 -0000
@@ -305,7 +305,7 @@
= error_spec.
report_missing_tabled_for_io(PredInfo, PredId, ProcId, ModuleInfo) = Spec :-
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
ProcPieces = describe_one_proc_name(ModuleInfo,
should_not_module_qualify, proc(PredId, ProcId)),
Pieces = ProcPieces ++ [words("contains untabled I/O primitive."), nl],
@@ -329,7 +329,7 @@
table_gen_transform_proc(EvalMethod, PredId, ProcId,
!ProcInfo, !PredInfo, !ModuleInfo, !GenMap)
;
- pred_info_context(!.PredInfo, Context),
+ pred_info_get_context(!.PredInfo, Context),
ProcPieces = describe_one_proc_name(!.ModuleInfo,
should_module_qualify, proc(PredId, ProcId)),
EvalMethodStr = eval_method_to_string(EvalMethod),
@@ -1813,7 +1813,7 @@
ModuleName = pred_info_module(PredInfo0),
PredName0 = pred_info_name(PredInfo0),
PredOrFunc = pred_info_is_pred_or_func(PredInfo0),
- pred_info_context(PredInfo0, Context),
+ pred_info_get_context(PredInfo0, Context),
% The generator is local even if the original predicate is exported.
Status = status_local,
pred_info_get_goal_type(PredInfo0, GoalType),
@@ -1825,7 +1825,8 @@
pred_info_get_constraint_proofs(PredInfo0, ClassProofs),
pred_info_get_constraint_map(PredInfo0, ClassConstraintMap),
pred_info_get_origin(PredInfo0, OrigOrigin),
- pred_info_clauses_info(PredInfo0, ClausesInfo),
+ pred_info_get_clauses_info(PredInfo0, ClausesInfo),
+ pred_info_get_var_name_remap(PredInfo0, VarNameRemap),
PredName = qualified(ModuleName, "GeneratorFor_" ++ PredName0),
assoc_list.from_corresponding_lists(HeadVars, ArgTypes0, HeadVarTypes),
@@ -1841,7 +1842,7 @@
pred_info_init(ModuleName, PredName, Arity, PredOrFunc, Context,
Origin, Status, GoalType, Markers, ArgTypes, TypeVarSet,
ExistQVars, ClassContext, ClassProofs, ClassConstraintMap,
- ClausesInfo, PredInfo),
+ ClausesInfo, VarNameRemap, PredInfo),
ModuleInfo0 = !.TableInfo ^ table_module_info,
module_info_get_predicate_table(ModuleInfo0, PredTable0),
@@ -1869,13 +1870,14 @@
proc_info_get_inferred_determinism(ProcInfo, ProcDetism),
proc_info_get_goal(ProcInfo, ProcGoal),
proc_info_get_rtti_varmaps(ProcInfo, ProcRttiVarMaps),
+ proc_info_get_var_name_remap(ProcInfo, VarNameRemap),
proc_info_create(ProcContext, ProcVarSet, ProcVarTypes, ProcHeadVars,
ProcInstVarSet, ProcHeadModes, ProcDetism, ProcGoal, ProcRttiVarMaps,
- address_is_not_taken, NewProcInfo),
+ address_is_not_taken, VarNameRemap, NewProcInfo),
ModuleName = pred_info_module(PredInfo),
OrigPredName = pred_info_name(PredInfo),
PredOrFunc = pred_info_is_pred_or_func(PredInfo),
- pred_info_context(PredInfo, PredContext),
+ pred_info_get_context(PredInfo, PredContext),
NewPredName = qualified(ModuleName, "OutlinedForIOTablingFrom_" ++
OrigPredName),
pred_info_get_arg_types(PredInfo, PredArgTypes),
@@ -1887,7 +1889,7 @@
pred_info_create(ModuleName, NewPredName, PredOrFunc, PredContext,
origin_created(io_tabling), status_local, Markers, PredArgTypes,
PredTypeVarSet, PredExistQVars, PredClassContext, PredAssertions,
- NewProcInfo, NewProcId, NewPredInfo),
+ VarNameRemap, NewProcInfo, NewProcId, NewPredInfo),
module_info_get_predicate_table(!.ModuleInfo, PredicateTable0),
predicate_table_insert(NewPredInfo, NewPredId,
PredicateTable0, PredicateTable),
Index: compiler/term_constr_build.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/term_constr_build.m,v
retrieving revision 1.16
diff -u -b -r1.16 term_constr_build.m
--- compiler/term_constr_build.m 13 Apr 2007 04:56:41 -0000 1.16
+++ compiler/term_constr_build.m 14 May 2007 15:58:50 -0000
@@ -193,7 +193,7 @@
% io.nl(!IO),
% io.flush_output(!IO),
module_info_pred_proc_info(Module, PPId, PredInfo, ProcInfo),
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
proc_info_get_vartypes(ProcInfo, VarTypes),
proc_info_get_headvars(ProcInfo, HeadProgVars),
proc_info_get_argmodes(ProcInfo, ArgModes0),
Index: compiler/term_constr_initial.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/term_constr_initial.m,v
retrieving revision 1.17
diff -u -b -r1.17 term_constr_initial.m
--- compiler/term_constr_initial.m 19 Jan 2007 07:04:32 -0000 1.17
+++ compiler/term_constr_initial.m 14 May 2007 15:58:58 -0000
@@ -280,7 +280,7 @@
process_builtin_procs(MakeOptInt, PredId, ModuleInfo, !PredInfo) :-
pred_info_get_import_status(!.PredInfo, ImportStatus),
pred_info_get_markers(!.PredInfo, Markers),
- pred_info_context(!.PredInfo, Context),
+ pred_info_get_context(!.PredInfo, Context),
some [!ProcTable] (
pred_info_get_procedures(!.PredInfo, !:ProcTable),
ProcIds = pred_info_procids(!.PredInfo),
Index: compiler/term_constr_main.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/term_constr_main.m,v
retrieving revision 1.13
diff -u -b -r1.13 term_constr_main.m
--- compiler/term_constr_main.m 19 Jan 2007 07:04:32 -0000 1.13
+++ compiler/term_constr_main.m 14 May 2007 15:59:05 -0000
@@ -536,7 +536,7 @@
->
PredName = pred_info_name(PredInfo),
pred_info_get_procedures(PredInfo, ProcTable),
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
PredOrFunc = pred_info_is_pred_or_func(PredInfo),
ModuleName = pred_info_module(PredInfo),
ProcIds = pred_info_procids(PredInfo),
Index: compiler/term_pass1.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/term_pass1.m,v
retrieving revision 1.34
diff -u -b -r1.34 term_pass1.m
--- compiler/term_pass1.m 13 Apr 2007 04:56:41 -0000 1.34
+++ compiler/term_pass1.m 14 May 2007 15:59:12 -0000
@@ -218,7 +218,7 @@
find_arg_sizes_pred(PPId, PassInfo, OutputSupplierMap0, Result,
TermErrors, !ModuleInfo, !IO) :-
module_info_pred_proc_info(!.ModuleInfo, PPId, PredInfo, ProcInfo),
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
proc_info_get_headvars(ProcInfo, Args),
proc_info_get_argmodes(ProcInfo, ArgModes),
proc_info_get_vartypes(ProcInfo, VarTypes),
Index: compiler/term_pass2.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/term_pass2.m,v
retrieving revision 1.29
diff -u -b -r1.29 term_pass2.m
--- compiler/term_pass2.m 13 Apr 2007 04:56:41 -0000 1.29
+++ compiler/term_pass2.m 14 May 2007 15:59:22 -0000
@@ -377,7 +377,7 @@
RecSupplierMap, NewRecSupplierMap0, CallInfo0, Result,
!ModuleInfo, !IO) :-
module_info_pred_proc_info(!.ModuleInfo, PPId, PredInfo, ProcInfo),
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
proc_info_get_goal(ProcInfo, Goal0),
% The pretest code we add for compiler-generated unification and comparison
% predicates uses type casts. It uses them in a way that is guaranteed
@@ -562,7 +562,7 @@
map.to_assoc_list(NeighboursMap, NeighboursList),
PPId = proc(PredId, _ProcId),
module_info_pred_info(Module, PredId, PredInfo),
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
zero_or_positive_weight_cycles_from_neighbours(NeighboursList,
PPId, Context, 0, [], CallWeights, Cycles).
Index: compiler/term_util.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/term_util.m,v
retrieving revision 1.54
diff -u -b -r1.54 term_util.m
--- compiler/term_util.m 1 Dec 2006 15:04:25 -0000 1.54
+++ compiler/term_util.m 14 May 2007 15:59:29 -0000
@@ -352,7 +352,7 @@
(
SCC = [proc(PredId, _) | _],
module_info_pred_info(ModuleInfo, PredId, PredInfo),
- pred_info_context(PredInfo, Context)
+ pred_info_get_context(PredInfo, Context)
;
SCC = [],
unexpected(this_file, "get_context_from_scc/3: empty SCC.")
Index: compiler/termination.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/termination.m,v
retrieving revision 1.73
diff -u -b -r1.73 termination.m
--- compiler/termination.m 19 Jan 2007 07:04:32 -0000 1.73
+++ compiler/termination.m 14 May 2007 15:59:41 -0000
@@ -591,7 +591,7 @@
module_info_preds(!.ModuleInfo, PredTable0),
map.lookup(PredTable0, PredId, PredInfo0),
pred_info_get_import_status(PredInfo0, ImportStatus),
- pred_info_context(PredInfo0, Context),
+ pred_info_get_context(PredInfo0, Context),
pred_info_get_procedures(PredInfo0, ProcTable0),
pred_info_get_markers(PredInfo0, Markers),
ProcIds = pred_info_procids(PredInfo0),
@@ -764,7 +764,7 @@
term_util.make_bool_list(HeadVars, [], UsedArgs),
ArgSizeInfo = yes(finite(0, UsedArgs))
;
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
Error = is_builtin(PredId),
ArgSizeInfo = yes(infinite([Context - Error]))
),
@@ -902,7 +902,7 @@
PredOrFunc = pred_info_is_pred_or_func(PredInfo),
ModuleName = pred_info_module(PredInfo),
pred_info_get_procedures(PredInfo, ProcTable),
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
SymName = qualified(ModuleName, PredName),
write_proc_termination_info(PredId, ProcIds, ProcTable,
PredOrFunc, SymName, Context, !IO)
Index: compiler/tupling.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/tupling.m,v
retrieving revision 1.36
diff -u -b -r1.36 tupling.m
--- compiler/tupling.m 6 Jan 2007 10:56:17 -0000 1.36
+++ compiler/tupling.m 16 May 2007 01:09:48 -0000
@@ -747,6 +747,7 @@
proc_info_get_inst_varset(ProcInfo, InstVarSet),
pred_info_get_markers(PredInfo, Markers),
pred_info_get_origin(PredInfo, OrigOrigin),
+ pred_info_get_var_name_remap(PredInfo, VarNameRemap),
PredName = pred_info_name(PredInfo),
PredOrFunc = pred_info_is_pred_or_func(PredInfo),
@@ -779,6 +780,7 @@
InstVarSet, % in
Markers, % in
address_is_not_taken, % in
+ VarNameRemap, % in
ModuleInfo0,
ModuleInfo,
AuxPredProcId
@@ -937,7 +939,7 @@
pred_info_name(PredInfo),
pred_info_orig_arity(PredInfo),
proc_id_to_int(ProcId)),
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
Context = context(FileName, _),
ProcLabelInContext = proc_label_in_context(pred_info_module(PredInfo),
FileName, ProcLabel),
Index: compiler/typecheck.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/typecheck.m,v
retrieving revision 1.422
diff -u -b -r1.422 typecheck.m
--- compiler/typecheck.m 14 May 2007 10:58:18 -0000 1.422
+++ compiler/typecheck.m 14 May 2007 16:04:43 -0000
@@ -232,7 +232,7 @@
PredName = pred_info_name(PredInfo),
PredOrFunc = pred_info_is_pred_or_func(PredInfo),
Name = unqualified(PredName),
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
pred_info_get_arg_types(PredInfo, VarSet, ExistQVars, Types0),
strip_builtin_qualifiers_from_type_list(Types0, Types),
pred_info_get_class_context(PredInfo, ClassContext),
@@ -345,7 +345,7 @@
pred_info_is_builtin(!.PredInfo)
)
->
- pred_info_clauses_info(!.PredInfo, ClausesInfo0),
+ pred_info_get_clauses_info(!.PredInfo, ClausesInfo0),
clauses_info_get_clauses_rep(ClausesInfo0, ClausesRep0),
IsEmpty = clause_list_is_empty(ClausesRep0),
(
@@ -382,7 +382,7 @@
pred_info_get_arg_types(!.PredInfo, _ArgTypeVarSet, ExistQVars0,
ArgTypes0),
some [!ClausesInfo, !Info, !HeadTypeParams] (
- pred_info_clauses_info(!.PredInfo, !:ClausesInfo),
+ pred_info_get_clauses_info(!.PredInfo, !:ClausesInfo),
clauses_info_get_clauses_rep(!.ClausesInfo, ClausesRep0),
clauses_info_get_headvar_list(!.ClausesInfo, HeadVars),
clauses_info_get_varset(!.ClausesInfo, VarSet0),
@@ -679,7 +679,7 @@
;
CalleeName = "no_clauses"
),
- pred_info_context(!.PredInfo, Context),
+ pred_info_get_context(!.PredInfo, Context),
generate_simple_call(mercury_private_builtin_module, CalleeName,
pf_predicate, only_mode, detism_det, purity_pure, [PredNameVar], [], [],
ModuleInfo, Context, CallGoal),
@@ -879,7 +879,7 @@
maybe_add_field_access_function_clause(ModuleInfo, !PredInfo) :-
pred_info_get_import_status(!.PredInfo, ImportStatus),
- pred_info_clauses_info(!.PredInfo, ClausesInfo0),
+ pred_info_get_clauses_info(!.PredInfo, ClausesInfo0),
clauses_info_get_clauses_rep(ClausesInfo0, ClausesRep0),
(
pred_info_is_field_access_function(ModuleInfo, !.PredInfo),
@@ -888,7 +888,7 @@
->
clauses_info_get_headvars(ClausesInfo0, HeadVars),
proc_arg_vector_to_func_args(HeadVars, FuncArgs, FuncRetVal),
- pred_info_context(!.PredInfo, Context),
+ pred_info_get_context(!.PredInfo, Context),
FuncModule = pred_info_module(!.PredInfo),
FuncName = pred_info_name(!.PredInfo),
PredArity = pred_info_orig_arity(!.PredInfo),
Index: compiler/typecheck_errors.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/typecheck_errors.m,v
retrieving revision 1.38
diff -u -b -r1.38 typecheck_errors.m
--- compiler/typecheck_errors.m 14 May 2007 08:20:12 -0000 1.38
+++ compiler/typecheck_errors.m 14 May 2007 15:55:30 -0000
@@ -317,7 +317,7 @@
PredPieces = describe_one_pred_name(ModuleInfo, should_not_module_qualify,
PredId),
Pieces = [words("Error: no clauses for") | PredPieces] ++ [suffix(".")],
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
% It is possible (and even likely) that the error that got the exit
% status set was caused by a syntax error in a clause defining this
% predicate or function. Reporting a missing clause could therefore
@@ -340,7 +340,7 @@
PredPieces = describe_one_pred_name(ModuleInfo, should_not_module_qualify,
PredId),
Pieces = [words("Warning: no clauses for ") | PredPieces] ++ [suffix(".")],
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
Msg = simple_msg(Context,
[option_is_set(warn_stubs, yes, [always(Pieces)])]),
Severity = severity_conditional(warn_stubs, yes, severity_warning, no),
Index: compiler/unify_proc.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/unify_proc.m,v
retrieving revision 1.185
diff -u -b -r1.185 unify_proc.m
--- compiler/unify_proc.m 13 Apr 2007 04:56:42 -0000 1.185
+++ compiler/unify_proc.m 15 May 2007 01:57:49 -0000
@@ -351,7 +351,7 @@
% to the proc_info, and mark the procedure as one that
% cannot be processed yet.
pred_info_get_procedures(!.PredInfo, !:ProcMap),
- pred_info_clauses_info(!.PredInfo, ClausesInfo),
+ pred_info_get_clauses_info(!.PredInfo, ClausesInfo),
map.lookup(!.ProcMap, ProcId, !:ProcInfo),
proc_info_set_can_process(no, !ProcInfo),
Index: compiler/untupling.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/untupling.m,v
retrieving revision 1.26
diff -u -b -r1.26 untupling.m
--- compiler/untupling.m 19 Jan 2007 07:04:35 -0000 1.26
+++ compiler/untupling.m 16 May 2007 01:10:07 -0000
@@ -422,6 +422,7 @@
proc_info_get_inst_varset(ProcInfo, InstVarSet),
pred_info_get_markers(PredInfo, Markers),
pred_info_get_origin(PredInfo, OrigOrigin),
+ pred_info_get_var_name_remap(PredInfo, VarNameRemap),
PredName = pred_info_name(PredInfo),
PredOrFunc = pred_info_is_pred_or_func(PredInfo),
@@ -441,7 +442,7 @@
hlds_pred.define_new_pred(Origin, Goal, CallAux, AuxHeadVars, _ExtraArgs,
InitialAuxInstMap, AuxPredName, TVarSet, VarTypes, ClassContext,
RttiVarMaps, VarSet, InstVarSet, Markers, address_is_not_taken,
- !ModuleInfo, proc(AuxPredId, AuxProcId)),
+ VarNameRemap, !ModuleInfo, proc(AuxPredId, AuxProcId)),
module_info_pred_proc_info(!.ModuleInfo, AuxPredId, AuxProcId,
AuxPredInfo, AuxProcInfo).
Index: compiler/unused_args.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/unused_args.m,v
retrieving revision 1.142
diff -u -b -r1.142 unused_args.m
--- compiler/unused_args.m 19 Jan 2007 07:04:35 -0000 1.142
+++ compiler/unused_args.m 16 May 2007 01:10:22 -0000
@@ -1172,11 +1172,12 @@
Arity = pred_info_orig_arity(!.PredInfo),
pred_info_get_typevarset(!.PredInfo, TypeVars),
remove_listof_elements(1, UnusedArgs, ArgTypes0, ArgTypes),
- pred_info_context(!.PredInfo, Context),
- pred_info_clauses_info(!.PredInfo, ClausesInfo),
+ pred_info_get_context(!.PredInfo, Context),
+ pred_info_get_clauses_info(!.PredInfo, ClausesInfo),
pred_info_get_markers(!.PredInfo, Markers),
pred_info_get_goal_type(!.PredInfo, GoalType),
pred_info_get_class_context(!.PredInfo, ClassContext),
+ pred_info_get_var_name_remap(!.PredInfo, VarNameRemap),
% Since this pred_info isn't built until after the polymorphism
% transformation is complete, we just use dummy maps for the class
@@ -1188,7 +1189,7 @@
pred_info_init(PredModule, Name, Arity, PredOrFunc, Context, Origin,
Status, GoalType, Markers, ArgTypes, Tvars, ExistQVars,
ClassContext, EmptyProofs, EmptyConstraintMap, ClausesInfo,
- !:PredInfo),
+ VarNameRemap, !:PredInfo),
pred_info_set_typevarset(TypeVars, !PredInfo).
% Replace the goal in the procedure with one to call the given
@@ -1835,7 +1836,7 @@
report_unused_args(_ModuleInfo, PredInfo, UnusedArgs) = Spec :-
list.length(UnusedArgs, NumArgs),
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
PredOrFunc = pred_info_is_pred_or_func(PredInfo),
ModuleName = pred_info_module(PredInfo),
PredName = pred_info_name(PredInfo),
Index: compiler/unused_imports.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/unused_imports.m,v
retrieving revision 1.9
diff -u -b -r1.9 unused_imports.m
--- compiler/unused_imports.m 19 Apr 2007 02:12:49 -0000 1.9
+++ compiler/unused_imports.m 14 May 2007 15:55:42 -0000
@@ -338,7 +338,7 @@
pred_info_get_procedures(PredInfo, ProcTable),
map.foldl(proc_info_used_modules(Visibility), ProcTable, !UsedModules),
- pred_info_clauses_info(PredInfo, ClausesInfo),
+ pred_info_get_clauses_info(PredInfo, ClausesInfo),
clauses_info_used_modules(ClausesInfo, !UsedModules)
;
true
Index: compiler/xml_documentation.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/xml_documentation.m,v
retrieving revision 1.14
diff -u -b -r1.14 xml_documentation.m
--- compiler/xml_documentation.m 20 Apr 2007 03:46:26 -0000 1.14
+++ compiler/xml_documentation.m 14 May 2007 15:55:47 -0000
@@ -487,7 +487,7 @@
Types = get_orig_arg_types(PredInfo),
pred_info_get_class_context(PredInfo, Constraints),
- pred_info_context(PredInfo, Context),
+ pred_info_get_context(PredInfo, Context),
(
IsPredOrFunc = pf_predicate,
Tag = "predicate"
cvs diff: Diffing compiler/notes
cvs diff: Diffing debian
cvs diff: Diffing debian/patches
cvs diff: Diffing deep_profiler
cvs diff: Diffing deep_profiler/notes
cvs diff: Diffing doc
cvs diff: Diffing extras
cvs diff: Diffing extras/base64
cvs diff: Diffing extras/cgi
cvs diff: Diffing extras/complex_numbers
cvs diff: Diffing extras/complex_numbers/samples
cvs diff: Diffing extras/complex_numbers/tests
cvs diff: Diffing extras/concurrency
cvs diff: Diffing extras/curs
cvs diff: Diffing extras/curs/samples
cvs diff: Diffing extras/curses
cvs diff: Diffing extras/curses/sample
cvs diff: Diffing extras/dynamic_linking
cvs diff: Diffing extras/error
cvs diff: Diffing extras/fixed
cvs diff: Diffing extras/gator
cvs diff: Diffing extras/gator/generations
cvs diff: Diffing extras/gator/generations/1
cvs diff: Diffing extras/graphics
cvs diff: Diffing extras/graphics/easyx
cvs diff: Diffing extras/graphics/easyx/samples
cvs diff: Diffing extras/graphics/mercury_allegro
cvs diff: Diffing extras/graphics/mercury_allegro/examples
cvs diff: Diffing extras/graphics/mercury_allegro/samples
cvs diff: Diffing extras/graphics/mercury_allegro/samples/demo
cvs diff: Diffing extras/graphics/mercury_allegro/samples/mandel
cvs diff: Diffing extras/graphics/mercury_allegro/samples/pendulum2
cvs diff: Diffing extras/graphics/mercury_allegro/samples/speed
cvs diff: Diffing extras/graphics/mercury_glut
cvs diff: Diffing extras/graphics/mercury_opengl
cvs diff: Diffing extras/graphics/mercury_tcltk
cvs diff: Diffing extras/graphics/samples
cvs diff: Diffing extras/graphics/samples/calc
cvs diff: Diffing extras/graphics/samples/gears
cvs diff: Diffing extras/graphics/samples/maze
cvs diff: Diffing extras/graphics/samples/pent
cvs diff: Diffing extras/lazy_evaluation
cvs diff: Diffing extras/lex
cvs diff: Diffing extras/lex/samples
cvs diff: Diffing extras/lex/tests
cvs diff: Diffing extras/log4m
cvs diff: Diffing extras/logged_output
cvs diff: Diffing extras/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/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 tests
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
Index: tests/invalid/ho_type_mode_bug.err_exp
===================================================================
RCS file: /home/mercury/mercury1/repository/tests/invalid/ho_type_mode_bug.err_exp,v
retrieving revision 1.7
diff -u -b -r1.7 ho_type_mode_bug.err_exp
--- tests/invalid/ho_type_mode_bug.err_exp 7 Sep 2006 05:51:28 -0000 1.7
+++ tests/invalid/ho_type_mode_bug.err_exp 16 May 2007 10:15:02 -0000
@@ -29,15 +29,16 @@
ho_type_mode_bug.m:024: In clause for `my_foldl2((pred(in, in, out) is det),
ho_type_mode_bug.m:024: in, in, out, in, out)':
ho_type_mode_bug.m:024: in argument 4 of clause head:
-ho_type_mode_bug.m:024: mode error in unification of `FirstAcc' and
+ho_type_mode_bug.m:024: mode error in unification of `HeadVar__4' and
ho_type_mode_bug.m:024: `FirstAcc'.
-ho_type_mode_bug.m:024: Variable `FirstAcc' has instantiatedness `free',
+ho_type_mode_bug.m:024: Variable `HeadVar__4' has instantiatedness `free',
ho_type_mode_bug.m:024: variable `FirstAcc' has instantiatedness `free'.
ho_type_mode_bug.m:024: In clause for `my_foldl2((pred(in, in, out) is det),
ho_type_mode_bug.m:024: in, in, out, in, out)':
ho_type_mode_bug.m:024: in argument 6 of clause head:
-ho_type_mode_bug.m:024: mode error in unification of `SecAcc' and `SecAcc'.
-ho_type_mode_bug.m:024: Variable `SecAcc' has instantiatedness `free',
+ho_type_mode_bug.m:024: mode error in unification of `HeadVar__6' and
+ho_type_mode_bug.m:024: `SecAcc'.
+ho_type_mode_bug.m:024: Variable `HeadVar__6' has instantiatedness `free',
ho_type_mode_bug.m:024: variable `SecAcc' has instantiatedness `free'.
ho_type_mode_bug.m:026: In clause for `my_foldl2((pred(in, in, out) is det),
ho_type_mode_bug.m:026: in, in, out, di, uo)':
@@ -70,13 +71,14 @@
ho_type_mode_bug.m:024: In clause for `my_foldl2((pred(in, in, out) is det),
ho_type_mode_bug.m:024: in, in, out, di, uo)':
ho_type_mode_bug.m:024: in argument 4 of clause head:
-ho_type_mode_bug.m:024: mode error in unification of `FirstAcc' and
+ho_type_mode_bug.m:024: mode error in unification of `HeadVar__4' and
ho_type_mode_bug.m:024: `FirstAcc'.
-ho_type_mode_bug.m:024: Variable `FirstAcc' has instantiatedness `free',
+ho_type_mode_bug.m:024: Variable `HeadVar__4' has instantiatedness `free',
ho_type_mode_bug.m:024: variable `FirstAcc' has instantiatedness `free'.
ho_type_mode_bug.m:024: In clause for `my_foldl2((pred(in, in, out) is det),
ho_type_mode_bug.m:024: in, in, out, di, uo)':
ho_type_mode_bug.m:024: in argument 6 of clause head:
-ho_type_mode_bug.m:024: mode error in unification of `SecAcc' and `SecAcc'.
-ho_type_mode_bug.m:024: Variable `SecAcc' has instantiatedness `free',
+ho_type_mode_bug.m:024: mode error in unification of `HeadVar__6' and
+ho_type_mode_bug.m:024: `SecAcc'.
+ho_type_mode_bug.m:024: Variable `HeadVar__6' has instantiatedness `free',
ho_type_mode_bug.m:024: variable `SecAcc' has instantiatedness `free'.
Index: tests/invalid/merge_ground_any.err_exp
===================================================================
RCS file: /home/mercury/mercury1/repository/tests/invalid/merge_ground_any.err_exp,v
retrieving revision 1.9
diff -u -b -r1.9 merge_ground_any.err_exp
--- tests/invalid/merge_ground_any.err_exp 7 Sep 2006 05:51:29 -0000 1.9
+++ tests/invalid/merge_ground_any.err_exp 16 May 2007 10:15:19 -0000
@@ -3,7 +3,7 @@
merge_ground_any.m:013: out(merge_ground_any.hpair(ground, any)))':
merge_ground_any.m:013: mode error: argument 5 did not get sufficiently
merge_ground_any.m:013: instantiated.
-merge_ground_any.m:013: Final instantiatedness of `X' was
+merge_ground_any.m:013: Final instantiatedness of `HeadVar__3' was
merge_ground_any.m:013: `bound(merge_ground_any.'+'(ground, ground) ;
merge_ground_any.m:013: merge_ground_any.'-'(ground, any))',
merge_ground_any.m:013: expected final instantiatedness was
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/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