[m-rev.] for review: --no-inline-builtins

Simon Taylor stayl at cs.mu.OZ.AU
Wed Jan 29 23:42:10 AEDT 2003


Estimated hours taken: 8
Branches: main

Add an option `--no-inline-builins', which causes builtins to
be generated as calls to out-of-line procedures. This can be
useful for debugging, as without this option the execution of
builtins is not traced.

On earth, a compiler built in grade asm_fast.gc.tr.debug
takes 36.8s to run `mmc -C -I ../analysis/ hlds.make_hlds'.
When the compiler is built with `--no-inline-builtins',
this is increased to 38.6s.

The size of the compiler built in grade asm_fast.gc.tr.debug
increases from 45.0MB to 46.6MB.

compiler/options.m:
	Add the option.

compiler/code_util.m:
	Work out whether builtins should be generated inline.

compiler/handle_options.m:
	Disable inlining of builtins when debugging.

compiler/simplify.m:
compiler/higher_order.m:
compiler/modes.m:
	code_util__builtin_state now needs to know where the
	builtin is being called from to know whether a particular
	call should be treated as an inline builtin. The "recursive"
	calls from the automatically generated procedures for each
	builtin should always be generated inline, or else we would
	generate an infinite loop.

NEWS:
doc/user_guide.texi:
compiler/notes/todo.html:
	Document the change.

tests/debugger/Mmakefile:
tests/debugger/no_inline_builtins.{m,exp,inp}:
	Test case.

tests/debugger/*.{inp,exp,exp2}:
tests/debugger/declarative/*.{inp,exp,exp2}:
	Update due to changed event numbers.

tests/debugger/lval_desc_array.inp:
	Use a less brittle method for stepping to the point in
	the program where the test needs to display variables.

tests/debugger/declarative/library_forwarding.m:
tests/debugger/declarative/*.m:
	Add forwarding predicates for some library predicates
	and functions so that the declarative debugger doesn't
	ask different questions depending on whether or not
	the library was compiled with debugging enabled.


Index: NEWS
===================================================================
RCS file: /home/mercury1/repository/mercury/NEWS,v
retrieving revision 1.298
diff -u -u -r1.298 NEWS
--- NEWS	27 Jan 2003 09:20:42 -0000	1.298
+++ NEWS	28 Jan 2003 05:26:56 -0000
@@ -97,6 +97,10 @@
   to use a different C compiler.  See the "C compilers" chapter
   of the Mercury User's Guide for details.
 
+* Inlining of builtins can now be disabled using the `--no-inline-builtins'
+  option.  This can be useful for debugging, as without this option the
+  execution of builtins is not traced.
+
 * The Mercury compiler now uses `.' and not `:' as the module separator
   in all output.
 
Index: compiler/code_util.m
===================================================================
RCS file: /home/mercury1/repository/mercury/compiler/code_util.m,v
retrieving revision 1.140
diff -u -u -r1.140 code_util.m
--- compiler/code_util.m	14 Jan 2003 16:42:26 -0000	1.140
+++ compiler/code_util.m	27 Jan 2003 05:35:18 -0000
@@ -136,8 +136,13 @@
 :- pred code_util__predinfo_is_builtin(pred_info).
 :- mode code_util__predinfo_is_builtin(in) is semidet.
 
-:- pred code_util__builtin_state(module_info, pred_id, proc_id, builtin_state).
-:- mode code_util__builtin_state(in, in, in, out) is det.
+	% code_util__builtin_state(ModuleInfo, CallerPredId,
+	%	PredId, ProcId, BuiltinState)
+	%
+	% Is the given procedure a builtin that should be generated inline?
+:- pred code_util__builtin_state(module_info,
+		pred_id, pred_id, proc_id, builtin_state).
+:- mode code_util__builtin_state(in, in, in, in, out) is det.
 
 	% Find out how a function symbol (constructor) is represented
 	% in the given type.
@@ -199,6 +204,7 @@
 :- import_module parse_tree__prog_util, check_hlds__type_util.
 :- import_module hlds__special_pred, backend_libs__builtin_ops.
 :- import_module backend_libs__code_model.
+:- import_module libs__options, libs__globals.
 
 :- import_module char, int, string, set, map, term, varset.
 :- import_module require, std_util, assoc_list.
@@ -424,12 +430,24 @@
 	hlds_pred__initial_proc_id(ProcId),
 	code_util__is_inline_builtin(ModuleName, PredName, ProcId, Arity).
 
-code_util__builtin_state(ModuleInfo, PredId, ProcId, BuiltinState) :-
+code_util__builtin_state(ModuleInfo, CallerPredId,
+		PredId, ProcId, BuiltinState) :-
 	module_info_pred_info(ModuleInfo, PredId, PredInfo),
 	pred_info_module(PredInfo, ModuleName),
 	pred_info_name(PredInfo, PredName),
 	pred_info_arity(PredInfo, Arity),
-	( code_util__is_inline_builtin(ModuleName, PredName, ProcId, Arity) ->
+	module_info_globals(ModuleInfo, Globals),
+	globals__lookup_bool_option(Globals, inline_builtins, InlineBuiltins),
+	(
+		% The automatically generated "recursive" call in the 
+		% goal for each builtin must be generated inline, or
+		% we would generate an infinite loop.
+		( InlineBuiltins = yes
+		; CallerPredId = PredId
+		),
+		code_util__is_inline_builtin(ModuleName, PredName,
+			ProcId, Arity)
+	->
 		BuiltinState = inline_builtin
 	;
 		BuiltinState = not_builtin
Index: compiler/handle_options.m
===================================================================
RCS file: /home/mercury1/repository/mercury/compiler/handle_options.m,v
retrieving revision 1.165
diff -u -u -r1.165 handle_options.m
--- compiler/handle_options.m	25 Jan 2003 01:31:49 -0000	1.165
+++ compiler/handle_options.m	29 Jan 2003 08:30:26 -0000
@@ -680,6 +680,7 @@
 			% relate the trace to the source code (although
 			% it can be easily related to the transformed HLDS).
 			globals__io_set_option(inline_simple, bool(no)),
+			globals__io_set_option(inline_builtins, bool(no)),
 			globals__io_set_option(inline_single_use, bool(no)),
 			globals__io_set_option(inline_compound_threshold,
 				int(0)),
Index: compiler/higher_order.m
===================================================================
RCS file: /home/mercury1/repository/mercury/compiler/higher_order.m,v
retrieving revision 1.99
diff -u -u -r1.99 higher_order.m
--- compiler/higher_order.m	27 Jan 2003 09:20:45 -0000	1.99
+++ compiler/higher_order.m	27 Jan 2003 14:53:56 -0000
@@ -989,7 +989,9 @@
 	pred_info_module(PredInfo, ModuleName),
 	pred_info_name(PredInfo, PredName),
 	SymName = qualified(ModuleName, PredName),
-	code_util__builtin_state(ModuleInfo, PredId, ProcId, Builtin),
+	proc(CallerPredId, _) = Info0 ^ pred_proc_id,
+	code_util__builtin_state(ModuleInfo, CallerPredId,
+		PredId, ProcId, Builtin),
 
 	MaybeContext = no,
 	Goal1 = call(PredId, ProcId, AllArgs, Builtin, MaybeContext, SymName),
Index: compiler/modes.m
===================================================================
RCS file: /home/mercury1/repository/mercury/compiler/modes.m,v
retrieving revision 1.262
diff -u -u -r1.262 modes.m
--- compiler/modes.m	27 Jan 2003 09:20:49 -0000	1.262
+++ compiler/modes.m	27 Jan 2003 14:53:58 -0000
@@ -1143,7 +1143,9 @@
 
 	=(ModeInfo),
 	{ mode_info_get_module_info(ModeInfo, ModuleInfo) },
-	{ code_util__builtin_state(ModuleInfo, PredId, Mode, Builtin) },
+	{ mode_info_get_predid(ModeInfo, CallerPredId) },
+	{ code_util__builtin_state(ModuleInfo, CallerPredId,
+		PredId, Mode, Builtin) },
 	{ Call = call(PredId, Mode, Args, Builtin, Context, PredName) },
 	handle_extra_goals(Call, ExtraGoals, GoalInfo0, Args0, Args,
 				InstMap0, Goal),
Index: compiler/options.m
===================================================================
RCS file: /home/mercury1/repository/mercury/compiler/options.m,v
retrieving revision 1.401
diff -u -u -r1.401 options.m
--- compiler/options.m	24 Jan 2003 07:17:08 -0000	1.401
+++ compiler/options.m	27 Jan 2003 10:51:18 -0000
@@ -402,6 +402,7 @@
 	%	- HLDS
 		;	inlining
 		;	inline_simple
+		;	inline_builtins
 		;	inline_single_use
 		;	inline_compound_threshold
 		;	inline_simple_threshold
@@ -983,6 +984,7 @@
 % HLDS
 	inlining		-	bool_special,
 	inline_simple		-	bool(no),
+	inline_builtins		-	bool(yes),
 	inline_single_use	-	bool(no),
 	inline_compound_threshold -	int(0),
 	inline_simple_threshold	-	int(5),	% has no effect until
@@ -1588,6 +1590,7 @@
 % HLDS->HLDS optimizations
 long_option("inlining", 		inlining).
 long_option("inline-simple",		inline_simple).
+long_option("inline-builtins",		inline_builtins).
 long_option("inline-single-use",	inline_single_use).
 long_option("inline-compound-threshold",	inline_compound_threshold).
 long_option("inline-simple-threshold",		inline_simple_threshold).
@@ -1954,14 +1957,15 @@
 	map__set(OptionTable1, require_tracing, bool(Value), OptionTable).
 special_handler(inlining, bool(Value), OptionTable0, ok(OptionTable)) :-
 	map__set(OptionTable0, inline_simple, bool(Value), OptionTable1),
-	map__set(OptionTable1, inline_single_use, bool(Value), OptionTable2),
+	map__set(OptionTable1, inline_builtins, bool(Value), OptionTable2),
+	map__set(OptionTable2, inline_single_use, bool(Value), OptionTable3),
 	(
 		Value = yes,
-		map__set(OptionTable2, inline_compound_threshold,
+		map__set(OptionTable3, inline_compound_threshold,
 			int(10), OptionTable)
 	;
 		Value = no,
-		map__set(OptionTable2, inline_compound_threshold,
+		map__set(OptionTable3, inline_compound_threshold,
 			int(0), OptionTable)
 	).
 special_handler(everything_in_one_c_function, none, OptionTable0,
@@ -3365,6 +3369,11 @@
 		"\tDisable all forms of inlining.",
 		"--no-inline-simple",
 		"\tDisable the inlining of simple procedures.",
+		"--no-inline-builtins",
+		"\tGenerate builtins (e.g. arithmetic operators) as calls to",
+		"\tout of line procedures.  This can be useful for debugging,",
+		"\tas without this option the execution of builtins is not",
+		"\ttraced.",
 		"--no-inline-single-use",
 		"\tDisable the inlining of procedures called only once.",
 		"--inline-compound-threshold <threshold>",
Index: compiler/simplify.m
===================================================================
RCS file: /home/mercury1/repository/mercury/compiler/simplify.m,v
retrieving revision 1.107
diff -u -u -r1.107 simplify.m
--- compiler/simplify.m	27 Jan 2003 09:20:51 -0000	1.107
+++ compiler/simplify.m	27 Jan 2003 14:53:59 -0000
@@ -1360,8 +1360,9 @@
 		% are being unified.
 		%
 		simplify__type_info_locn(TypeVar, TypeInfoVar, ExtraGoals),
+		=(Info),
 		{ simplify__call_generic_unify(TypeInfoVar, XVar, YVar,
-			ModuleInfo, Context, GoalInfo0, Call) }
+			ModuleInfo, Info, Context, GoalInfo0, Call) }
 
 	; { type_is_higher_order(Type, _, _, _, _) } ->
 		%
@@ -1429,8 +1430,9 @@
 			;
 				error("simplify__process_compl_unify: more than one typeinfo for one type var")
 			},
+			=(Info),
 			{ simplify__call_generic_unify(TypeInfoVar, XVar, YVar,
-				ModuleInfo, Context, GoalInfo0, Call) }
+				ModuleInfo, Info, Context, GoalInfo0, Call) }
 		;
 			%
 			% Convert other complicated unifications into
@@ -1452,11 +1454,11 @@
 	{ conj_list_to_goal(ConjList, GoalInfo0, Goal) }.
 
 :- pred simplify__call_generic_unify(prog_var::in, prog_var::in,  prog_var::in, 
-	module_info::in, unify_context::in, hlds_goal_info::in, hlds_goal::out)
-	is det.
+	module_info::in, simplify_info::in, unify_context::in,
+	hlds_goal_info::in, hlds_goal::out) is det.
 
-simplify__call_generic_unify(TypeInfoVar, XVar, YVar, ModuleInfo, Context,
-		GoalInfo0, Call) :-
+simplify__call_generic_unify(TypeInfoVar, XVar, YVar, ModuleInfo, Info,
+		Context, GoalInfo0, Call) :-
 	ArgVars = [TypeInfoVar, XVar, YVar],
 	module_info_get_predicate_table(ModuleInfo, PredicateTable),
 	mercury_public_builtin_module(MercuryBuiltin),
@@ -1472,8 +1474,12 @@
 	% (This should have been checked by mode analysis.)
 	hlds_pred__in_in_unification_proc_id(ProcId),
 
-	SymName = unqualified("unify"),
-	code_util__builtin_state(ModuleInfo, PredId, ProcId, BuiltinState),
+	SymName = qualified(MercuryBuiltin, "unify"),
+
+	simplify_info_get_det_info(Info, DetInfo),
+	det_info_get_pred_id(DetInfo, CallerPredId),
+	code_util__builtin_state(ModuleInfo, CallerPredId,
+		PredId, ProcId, BuiltinState),
 	CallContext = call_unify_context(XVar, var(YVar), Context),
 	goal_info_get_nonlocals(GoalInfo0, NonLocals0),
 	set__insert(NonLocals0, TypeInfoVar, NonLocals),
Index: compiler/notes/todo.html
===================================================================
RCS file: /home/mercury1/repository/mercury/compiler/notes/todo.html,v
retrieving revision 1.14
diff -u -u -r1.14 todo.html
--- compiler/notes/todo.html	10 Jan 2003 05:34:45 -0000	1.14
+++ compiler/notes/todo.html	28 Jan 2003 00:38:53 -0000
@@ -167,7 +167,7 @@
 <li> allow interactive queries to refer to values generated by
      the program being debugged
 <li> conditional breakpoints
-<li> trace builtins and semidet unifications
+<li> trace semidet unifications
 <li> graphical term browser
 </ul>
 
Index: doc/user_guide.texi
===================================================================
RCS file: /home/mercury1/repository/mercury/doc/user_guide.texi,v
retrieving revision 1.350
diff -u -u -r1.350 user_guide.texi
--- doc/user_guide.texi	24 Jan 2003 07:17:09 -0000	1.350
+++ doc/user_guide.texi	27 Jan 2003 08:20:39 -0000
@@ -5659,6 +5659,14 @@
 @findex --inline-simple
 Disable the inlining of simple procedures.
 
+ at sp 1
+ at item --no-inline-builtins
+ at findex --no-inline-builtins
+Generate builtins (e.g.@: arithmetic operators) as calls to
+out of line procedures.  This can be useful for debugging,
+as without this option the execution of builtins is not
+traced.
+
 @item --no-inline-single-use
 @findex --no-inline-single-use
 @findex --inline-single-use
Index: tests/debugger/Mercury.options
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/Mercury.options,v
retrieving revision 1.4
diff -u -u -r1.4 Mercury.options
--- tests/debugger/Mercury.options	22 Oct 2002 04:36:13 -0000	1.4
+++ tests/debugger/Mercury.options	27 Jan 2003 05:47:22 -0000
@@ -3,6 +3,7 @@
 # the input is not a terminal.
 MLFLAGS-completion = --runtime-flags --force-readline
 
+MCFLAGS-no_inline_builtins = --no-inline-builtins
 MCFLAGS-queens_rep = --trace rep
 MCFLAGS-shallow = --trace shallow
 MCFLAGS-tabled_read = --trace-table-io-all
Index: tests/debugger/Mmakefile
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/Mmakefile,v
retrieving revision 1.92
diff -u -u -r1.92 Mmakefile
--- tests/debugger/Mmakefile	15 Nov 2002 04:50:43 -0000	1.92
+++ tests/debugger/Mmakefile	29 Jan 2003 02:40:01 -0000
@@ -101,8 +101,20 @@
     SENSITIVE_PROGS :=
 endif
 
+# The no_inline_builtins test only works if the library is
+# built with execution tracing enabled. Adding a `.exp2' file
+# to allow it to be run in other grades would mean that we
+# wouldn't detect a regression which caused builtins not to
+# be traced with `--no-inline-builtins'.
+ifeq "$(findstring debug,$(GRADE))" "debug"
+	DEBUG_GRADE_PROGS = no_inline_builtins
+else 
+	DEBUG_GRADE_PROGS =
+endif
+
 ALL_RETRY_PROGS = $(RETRY_PROGS) $(INTERACTIVE_PROGS)
-ALL_NONRETRY_PROGS = $(NONRETRY_PROGS) $(SENSITIVE_PROGS) $(SHALLOW_PROGS)
+ALL_NONRETRY_PROGS = $(NONRETRY_PROGS) $(SENSITIVE_PROGS) \
+			$(SHALLOW_PROGS) $(DEBUG_GRADE_PROGS)
 
 # Debugging doesn't yet don't work in MLDS grades (hl*, il*, and java),
 # and the retry command doesn't and will not work in deep profiling
@@ -238,7 +250,8 @@
 existential_type_classes.out: existential_type_classes \
 			existential_type_classes.inp
 	$(MDB_STD) ./existential_type_classes < existential_type_classes.inp \
-		2>&1 | sed 's/string.m:[0-9]*/string.m:NNNN/g' \
+		2>&1 | sed 's/string.m:[0-9]*/string.m:NNNN/g' | \
+		sed 's/int.m:[0-9]*/int.m:NNNN/g' \
 		> existential_type_classes.out
 
 field_names.out: field_names field_names.inp
@@ -282,6 +295,10 @@
 	$(MDB) ./multi_parameter < multi_parameter.inp 2>&1 | \
 		sed 's/char.m:[0-9]*/char.m:NNNN/g' > multi_parameter.out
 
+no_inline_builtins.out: no_inline_builtins no_inline_builtins.inp
+	$(MDB) ./no_inline_builtins < no_inline_builtins.inp \
+		> no_inline_builtins.out 2>&1
+
 # We need to pipe the output through sed to avoid hard-coding dependencies on
 # particular line numbers in the standard library source code.
 output_term_dep.out: output_term_dep output_term_dep.inp
@@ -310,7 +327,8 @@
 	$(MDB_STD) ./print_table < print_table.inp > print_table.out 2>&1
 
 queens.out: queens queens.inp
-	$(MDB_STD) ./queens < queens.inp > queens.out 2>&1
+	$(MDB_STD) ./queens < queens.inp 2>&1 | \
+		sed 's/int.m:[0-9]*/int.m:NNNN/g' > queens.out 2>&1
 
 queens_rep.out: queens_rep queens_rep.inp
 	$(MDB) ./queens_rep < queens_rep.inp > queens_rep.out 2>&1
Index: tests/debugger/existential_type_classes.exp2
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/existential_type_classes.exp2,v
retrieving revision 1.14
diff -u -u -r1.14 existential_type_classes.exp2
--- tests/debugger/existential_type_classes.exp2	17 Jan 2003 05:56:52 -0000	1.14
+++ tests/debugger/existential_type_classes.exp2	29 Jan 2003 08:33:08 -0000
@@ -26,179 +26,195 @@
 mdb> continue -a
       E5:     C5  5 CALL existential_type_classes.m:44 (from existential_type_classes.m:21)
                          pred existential_type_classes.int_foo/2-0 (det)
-      E6:     C5  5 EXIT existential_type_classes.m:44 (from existential_type_classes.m:21)
+      E6:     C6  6 CALL int.m:NNNN (from existential_type_classes.m:44)
+                         func int.*/2-0 (det)
+      E7:     C6  6 EXIT int.m:NNNN (from existential_type_classes.m:44)
+                         func int.*/2-0 (det)
+      E8:     C5  5 EXIT existential_type_classes.m:44 (from existential_type_classes.m:21)
                          pred existential_type_classes.int_foo/2-0 (det)
-      E7:     C4  4 EXIT existential_type_classes.m:21
+      E9:     C4  4 EXIT existential_type_classes.m:21
                          pred existential_type_classes.ClassMethod_for_existential_type_classes__fooable____int__arity0______existential_type_classes__foo_2/2-0 (det)
-      E8:     C3  3 EXIT (from existential_type_classes.m:68)
+     E10:     C3  3 EXIT (from existential_type_classes.m:68)
                          pred existential_type_classes.foo/2-0 (det)
-      E9:     C2  2 EXIT existential_type_classes.m:68 (from existential_type_classes.m:51)
+     E11:     C2  2 EXIT existential_type_classes.m:68 (from existential_type_classes.m:51)
                          pred existential_type_classes.do_foo/2-0 (det)
 mdb> P
        X (arg 1)              	42
        N (arg 2)              	84
 mdb> continue -a
-     E10:     C6  2 CALL existential_type_classes.m:68 (from existential_type_classes.m:52)
+     E12:     C7  2 CALL existential_type_classes.m:68 (from existential_type_classes.m:52)
                          pred existential_type_classes.do_foo/2-0 (det)
 mdb> P
        X (arg 1)              	"blah"
 mdb> 
-     E11:     C7  3 CALL (from existential_type_classes.m:68)
+     E13:     C8  3 CALL (from existential_type_classes.m:68)
                          pred existential_type_classes.foo/2-0 (det)
 mdb> P
        HeadVar__1             	"blah"
 mdb> 
-     E12:     C8  4 CALL existential_type_classes.m:25
+     E14:     C9  4 CALL existential_type_classes.m:25
                          pred existential_type_classes.ClassMethod_for_existential_type_classes__fooable____string__arity0______existential_type_classes__foo_2/2-0 (det)
 mdb> P
        HeadVar__1             	"blah"
 mdb> continue -a
-     E13:     C9  5 CALL existential_type_classes.m:47 (from existential_type_classes.m:25)
+     E15:    C10  5 CALL existential_type_classes.m:47 (from existential_type_classes.m:25)
                          pred existential_type_classes.string_foo/2-0 (det)
-     E14:    C10  6 CALL string.m:NNNN (from existential_type_classes.m:47)
+     E16:    C11  6 CALL string.m:NNNN (from existential_type_classes.m:47)
                          pred string.length/2-0 (det)
-     E15:    C10  6 EXIT string.m:NNNN (from existential_type_classes.m:47)
+     E17:    C11  6 EXIT string.m:NNNN (from existential_type_classes.m:47)
                          pred string.length/2-0 (det)
-     E16:     C9  5 EXIT existential_type_classes.m:47 (from existential_type_classes.m:25)
+     E18:    C10  5 EXIT existential_type_classes.m:47 (from existential_type_classes.m:25)
                          pred existential_type_classes.string_foo/2-0 (det)
-     E17:     C8  4 EXIT existential_type_classes.m:25
+     E19:     C9  4 EXIT existential_type_classes.m:25
                          pred existential_type_classes.ClassMethod_for_existential_type_classes__fooable____string__arity0______existential_type_classes__foo_2/2-0 (det)
-     E18:     C7  3 EXIT (from existential_type_classes.m:68)
+     E20:     C8  3 EXIT (from existential_type_classes.m:68)
                          pred existential_type_classes.foo/2-0 (det)
-     E19:     C6  2 EXIT existential_type_classes.m:68 (from existential_type_classes.m:52)
+     E21:     C7  2 EXIT existential_type_classes.m:68 (from existential_type_classes.m:52)
                          pred existential_type_classes.do_foo/2-0 (det)
 mdb> P
        X (arg 1)              	"blah"
        N (arg 2)              	4
 mdb> continue -a
-     E20:    C11  2 CALL existential_type_classes.m:74 (from existential_type_classes.m:53)
+     E22:    C12  2 CALL existential_type_classes.m:74 (from existential_type_classes.m:53)
                          func existential_type_classes.my_exist_t/0-0 (det)
-     E21:    C11  2 EXIT existential_type_classes.m:74 (from existential_type_classes.m:53)
+     E23:    C12  2 EXIT existential_type_classes.m:74 (from existential_type_classes.m:53)
                          func existential_type_classes.my_exist_t/0-0 (det)
-     E22:    C12  2 CALL existential_type_classes.m:68 (from existential_type_classes.m:53)
+     E24:    C13  2 CALL existential_type_classes.m:68 (from existential_type_classes.m:53)
                          pred existential_type_classes.do_foo/2-0 (det)
 mdb> P
        X (arg 1)              	43
 mdb> 
-     E23:    C13  3 CALL (from existential_type_classes.m:68)
+     E25:    C14  3 CALL (from existential_type_classes.m:68)
                          pred existential_type_classes.foo/2-0 (det)
 mdb> P
        HeadVar__1             	43
 mdb> 
-     E24:    C14  4 CALL existential_type_classes.m:21
+     E26:    C15  4 CALL existential_type_classes.m:21
                          pred existential_type_classes.ClassMethod_for_existential_type_classes__fooable____int__arity0______existential_type_classes__foo_2/2-0 (det)
 mdb> P
        HeadVar__1             	43
 mdb> continue -a
-     E25:    C15  5 CALL existential_type_classes.m:44 (from existential_type_classes.m:21)
+     E27:    C16  5 CALL existential_type_classes.m:44 (from existential_type_classes.m:21)
                          pred existential_type_classes.int_foo/2-0 (det)
-     E26:    C15  5 EXIT existential_type_classes.m:44 (from existential_type_classes.m:21)
+     E28:    C17  6 CALL int.m:NNNN (from existential_type_classes.m:44)
+                         func int.*/2-0 (det)
+     E29:    C17  6 EXIT int.m:NNNN (from existential_type_classes.m:44)
+                         func int.*/2-0 (det)
+     E30:    C16  5 EXIT existential_type_classes.m:44 (from existential_type_classes.m:21)
                          pred existential_type_classes.int_foo/2-0 (det)
-     E27:    C14  4 EXIT existential_type_classes.m:21
+     E31:    C15  4 EXIT existential_type_classes.m:21
                          pred existential_type_classes.ClassMethod_for_existential_type_classes__fooable____int__arity0______existential_type_classes__foo_2/2-0 (det)
-     E28:    C13  3 EXIT (from existential_type_classes.m:68)
+     E32:    C14  3 EXIT (from existential_type_classes.m:68)
                          pred existential_type_classes.foo/2-0 (det)
-     E29:    C12  2 EXIT existential_type_classes.m:68 (from existential_type_classes.m:53)
+     E33:    C13  2 EXIT existential_type_classes.m:68 (from existential_type_classes.m:53)
                          pred existential_type_classes.do_foo/2-0 (det)
 mdb> P
        X (arg 1)              	43
        N (arg 2)              	86
 mdb> continue -a
-     E30:    C16  2 CALL existential_type_classes.m:70 (from existential_type_classes.m:54)
+     E34:    C18  2 CALL existential_type_classes.m:70 (from existential_type_classes.m:54)
                          func existential_type_classes.call_my_exist_t/0-0 (det)
-     E31:    C17  3 CALL existential_type_classes.m:74 (from existential_type_classes.m:70)
+     E35:    C19  3 CALL existential_type_classes.m:74 (from existential_type_classes.m:70)
                          func existential_type_classes.my_exist_t/0-0 (det)
-     E32:    C17  3 EXIT existential_type_classes.m:74 (from existential_type_classes.m:70)
+     E36:    C19  3 EXIT existential_type_classes.m:74 (from existential_type_classes.m:70)
                          func existential_type_classes.my_exist_t/0-0 (det)
-     E33:    C16  2 EXIT existential_type_classes.m:70 (from existential_type_classes.m:54)
+     E37:    C18  2 EXIT existential_type_classes.m:70 (from existential_type_classes.m:54)
                          func existential_type_classes.call_my_exist_t/0-0 (det)
-     E34:    C18  2 CALL existential_type_classes.m:68 (from existential_type_classes.m:54)
+     E38:    C20  2 CALL existential_type_classes.m:68 (from existential_type_classes.m:54)
                          pred existential_type_classes.do_foo/2-0 (det)
 mdb> P
        X (arg 1)              	43
 mdb> 
-     E35:    C19  3 CALL (from existential_type_classes.m:68)
+     E39:    C21  3 CALL (from existential_type_classes.m:68)
                          pred existential_type_classes.foo/2-0 (det)
 mdb> P
        HeadVar__1             	43
 mdb> 
-     E36:    C20  4 CALL existential_type_classes.m:21
+     E40:    C22  4 CALL existential_type_classes.m:21
                          pred existential_type_classes.ClassMethod_for_existential_type_classes__fooable____int__arity0______existential_type_classes__foo_2/2-0 (det)
 mdb> P
        HeadVar__1             	43
 mdb> continue -a
-     E37:    C21  5 CALL existential_type_classes.m:44 (from existential_type_classes.m:21)
+     E41:    C23  5 CALL existential_type_classes.m:44 (from existential_type_classes.m:21)
                          pred existential_type_classes.int_foo/2-0 (det)
-     E38:    C21  5 EXIT existential_type_classes.m:44 (from existential_type_classes.m:21)
+     E42:    C24  6 CALL int.m:NNNN (from existential_type_classes.m:44)
+                         func int.*/2-0 (det)
+     E43:    C24  6 EXIT int.m:NNNN (from existential_type_classes.m:44)
+                         func int.*/2-0 (det)
+     E44:    C23  5 EXIT existential_type_classes.m:44 (from existential_type_classes.m:21)
                          pred existential_type_classes.int_foo/2-0 (det)
-     E39:    C20  4 EXIT existential_type_classes.m:21
+     E45:    C22  4 EXIT existential_type_classes.m:21
                          pred existential_type_classes.ClassMethod_for_existential_type_classes__fooable____int__arity0______existential_type_classes__foo_2/2-0 (det)
-     E40:    C19  3 EXIT (from existential_type_classes.m:68)
+     E46:    C21  3 EXIT (from existential_type_classes.m:68)
                          pred existential_type_classes.foo/2-0 (det)
-     E41:    C18  2 EXIT existential_type_classes.m:68 (from existential_type_classes.m:54)
+     E47:    C20  2 EXIT existential_type_classes.m:68 (from existential_type_classes.m:54)
                          pred existential_type_classes.do_foo/2-0 (det)
 mdb> P
        X (arg 1)              	43
        N (arg 2)              	86
 mdb> continue -a
-     E42:    C22  2 CALL existential_type_classes.m:82 (from existential_type_classes.m:55)
+     E48:    C25  2 CALL existential_type_classes.m:82 (from existential_type_classes.m:55)
                          func existential_type_classes.my_univ/1-0 (det)
-     E43:    C22  2 EXIT existential_type_classes.m:82 (from existential_type_classes.m:55)
+     E49:    C25  2 EXIT existential_type_classes.m:82 (from existential_type_classes.m:55)
                          func existential_type_classes.my_univ/1-0 (det)
-     E44:    C23  2 CALL existential_type_classes.m:76 (from existential_type_classes.m:55)
+     E50:    C26  2 CALL existential_type_classes.m:76 (from existential_type_classes.m:55)
                          func existential_type_classes.my_univ_value/1-0 (det)
-     E45:    C23  2 EXIT existential_type_classes.m:76 (from existential_type_classes.m:55)
+     E51:    C26  2 EXIT existential_type_classes.m:76 (from existential_type_classes.m:55)
                          func existential_type_classes.my_univ_value/1-0 (det)
-     E46:    C24  2 CALL existential_type_classes.m:68 (from existential_type_classes.m:55)
+     E52:    C27  2 CALL existential_type_classes.m:68 (from existential_type_classes.m:55)
                          pred existential_type_classes.do_foo/2-0 (det)
 mdb> P
        X (arg 1)              	45
 mdb> 
-     E47:    C25  3 CALL (from existential_type_classes.m:68)
+     E53:    C28  3 CALL (from existential_type_classes.m:68)
                          pred existential_type_classes.foo/2-0 (det)
 mdb> P
        HeadVar__1             	45
 mdb> 
-     E48:    C26  4 CALL existential_type_classes.m:21
+     E54:    C29  4 CALL existential_type_classes.m:21
                          pred existential_type_classes.ClassMethod_for_existential_type_classes__fooable____int__arity0______existential_type_classes__foo_2/2-0 (det)
 mdb> P
        HeadVar__1             	45
 mdb> continue -a
-     E49:    C27  5 CALL existential_type_classes.m:44 (from existential_type_classes.m:21)
+     E55:    C30  5 CALL existential_type_classes.m:44 (from existential_type_classes.m:21)
                          pred existential_type_classes.int_foo/2-0 (det)
-     E50:    C27  5 EXIT existential_type_classes.m:44 (from existential_type_classes.m:21)
+     E56:    C31  6 CALL int.m:NNNN (from existential_type_classes.m:44)
+                         func int.*/2-0 (det)
+     E57:    C31  6 EXIT int.m:NNNN (from existential_type_classes.m:44)
+                         func int.*/2-0 (det)
+     E58:    C30  5 EXIT existential_type_classes.m:44 (from existential_type_classes.m:21)
                          pred existential_type_classes.int_foo/2-0 (det)
-     E51:    C26  4 EXIT existential_type_classes.m:21
+     E59:    C29  4 EXIT existential_type_classes.m:21
                          pred existential_type_classes.ClassMethod_for_existential_type_classes__fooable____int__arity0______existential_type_classes__foo_2/2-0 (det)
-     E52:    C25  3 EXIT (from existential_type_classes.m:68)
+     E60:    C28  3 EXIT (from existential_type_classes.m:68)
                          pred existential_type_classes.foo/2-0 (det)
-     E53:    C24  2 EXIT existential_type_classes.m:68 (from existential_type_classes.m:55)
+     E61:    C27  2 EXIT existential_type_classes.m:68 (from existential_type_classes.m:55)
                          pred existential_type_classes.do_foo/2-0 (det)
 mdb> P
        X (arg 1)              	45
        N (arg 2)              	90
 mdb> 
-     E54:    C28  2 CALL existential_type_classes.m:82 (from existential_type_classes.m:56)
+     E62:    C32  2 CALL existential_type_classes.m:82 (from existential_type_classes.m:56)
                          func existential_type_classes.my_univ/1-0 (det)
 mdb> 
-     E55:    C28  2 EXIT existential_type_classes.m:82 (from existential_type_classes.m:56)
+     E63:    C32  2 EXIT existential_type_classes.m:82 (from existential_type_classes.m:56)
                          func existential_type_classes.my_univ/1-0 (det)
 mdb> 
-     E56:    C29  2 CALL existential_type_classes.m:72 (from existential_type_classes.m:56)
+     E64:    C33  2 CALL existential_type_classes.m:72 (from existential_type_classes.m:56)
                          func existential_type_classes.call_my_univ_value/1-0 (det)
 mdb> P
        Univ (arg 1)           	my_univ('<<c_pointer>>')
 mdb> 
-     E57:    C30  3 CALL existential_type_classes.m:76 (from existential_type_classes.m:72)
+     E65:    C34  3 CALL existential_type_classes.m:76 (from existential_type_classes.m:72)
                          func existential_type_classes.my_univ_value/1-0 (det)
 mdb> P
        HeadVar__1             	my_univ('<<c_pointer>>')
 mdb> continue -a
-     E58:    C30  3 EXIT existential_type_classes.m:76 (from existential_type_classes.m:72)
+     E66:    C34  3 EXIT existential_type_classes.m:76 (from existential_type_classes.m:72)
                          func existential_type_classes.my_univ_value/1-0 (det)
-     E59:    C29  2 EXIT existential_type_classes.m:72 (from existential_type_classes.m:56)
+     E67:    C33  2 EXIT existential_type_classes.m:72 (from existential_type_classes.m:56)
                          func existential_type_classes.call_my_univ_value/1-0 (det)
-     E60:    C31  2 CALL existential_type_classes.m:68 (from existential_type_classes.m:56)
+     E68:    C35  2 CALL existential_type_classes.m:68 (from existential_type_classes.m:56)
                          pred existential_type_classes.do_foo/2-0 (det)
 mdb> P
        X (arg 1)              	"something"
Index: tests/debugger/lval_desc_array.exp
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/lval_desc_array.exp,v
retrieving revision 1.3
diff -u -u -r1.3 lval_desc_array.exp
--- tests/debugger/lval_desc_array.exp	17 Jan 2003 05:56:54 -0000	1.3
+++ tests/debugger/lval_desc_array.exp	29 Jan 2003 09:01:05 -0000
@@ -4,9 +4,12 @@
 mdb> context none
 Contexts will not be printed.
 mdb> register --quiet
-mdb> goto 218
-     218:    110  3 EXIT pred lval_desc_array.increment/2-0 (det)
-mdb> up 1
+mdb> break -E 107 -e lval_desc_array__increment
+ 0: + stop      entry pred lval_desc_array.increment/2-0 (det)
+            (ignore next 107 call events)
+mdb> continue
+     217:    110  3 CALL pred lval_desc_array.increment/2-0 (det)
+mdb> up
 Ancestor level set to 1:
    1  pred lval_desc_array.perform_increments/2-0 (det)
 mdb> print *
Index: tests/debugger/lval_desc_array.exp2
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/lval_desc_array.exp2,v
retrieving revision 1.2
diff -u -u -r1.2 lval_desc_array.exp2
--- tests/debugger/lval_desc_array.exp2	17 Jan 2003 05:56:54 -0000	1.2
+++ tests/debugger/lval_desc_array.exp2	29 Jan 2003 08:54:42 -0000
@@ -4,13 +4,16 @@
 mdb> context none
 Contexts will not be printed.
 mdb> register --quiet
-mdb> goto 218
-     218:    110  3 EXIT pred lval_desc_array.increment/2-0 (det)
-mdb> up 1
+mdb> break -E 107 -e lval_desc_array__increment
+ 0: + stop      entry pred lval_desc_array.increment/2-0 (det)
+            (ignore next 107 call events)
+mdb> continue
+     431:    217  3 CALL pred lval_desc_array.increment/2-0 (det)
+mdb> up
 Ancestor level set to 1:
    1  pred lval_desc_array.perform_increments/2-0 (det)
 mdb> print *
-       HeadVar__1             	0
+       DCG_0 (arg 1)          	0
        DCG_1                  	1
        DCG_2                  	2
        DCG_3                  	3
Index: tests/debugger/lval_desc_array.inp
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/lval_desc_array.inp,v
retrieving revision 1.1
diff -u -u -r1.1 lval_desc_array.inp
--- tests/debugger/lval_desc_array.inp	10 Dec 2001 06:50:15 -0000	1.1
+++ tests/debugger/lval_desc_array.inp	29 Jan 2003 08:54:40 -0000
@@ -1,7 +1,8 @@
 echo on
 context none
 register --quiet
-goto 218
-up 1
+break -E 107 -e lval_desc_array__increment
+continue
+up
 print *
 continue
Index: tests/debugger/no_inline_builtins.exp
===================================================================
RCS file: tests/debugger/no_inline_builtins.exp
diff -N tests/debugger/no_inline_builtins.exp
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/debugger/no_inline_builtins.exp	27 Jan 2003 07:34:57 -0000
@@ -0,0 +1,18 @@
+       1:      1  1 CALL pred no_inline_builtins.main/2-0 (det) no_inline_builtins.m:11
+mdb> echo on
+Command echo enabled.
+mdb> context none
+Contexts will not be printed.
+mdb> register --quiet
+mdb> break int.+/2-0
+ 0: + stop  interface func int.+/2-0 (det)
+mdb> continue
+       2:      2  2 CALL func int.+/2-0 (det)
+mdb> print 1
+       HeadVar__1             	40
+mdb> print 2
+       HeadVar__2             	2
+mdb> continue
+       3:      2  2 EXIT func int.+/2-0 (det)
+mdb> continue -n
+42
Index: tests/debugger/no_inline_builtins.inp
===================================================================
RCS file: tests/debugger/no_inline_builtins.inp
diff -N tests/debugger/no_inline_builtins.inp
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/debugger/no_inline_builtins.inp	27 Jan 2003 07:33:03 -0000
@@ -0,0 +1,9 @@
+echo on
+context none
+register --quiet
+break int.+/2-0
+continue
+print 1
+print 2
+continue
+continue -n
Index: tests/debugger/no_inline_builtins.m
===================================================================
RCS file: tests/debugger/no_inline_builtins.m
diff -N tests/debugger/no_inline_builtins.m
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/debugger/no_inline_builtins.m	27 Jan 2003 05:46:42 -0000
@@ -0,0 +1,13 @@
+:- module no_inline_builtins.
+:- interface.
+:- import_module io.
+
+:- pred main(io__state::di, io__state::uo) is det.
+
+:- implementation.
+
+:- import_module int.
+
+main -->
+	io__write_int(40 + 2),
+	io__nl.
Index: tests/debugger/queens.exp2
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/queens.exp2,v
retrieving revision 1.5
diff -u -u -r1.5 queens.exp2
--- tests/debugger/queens.exp2	17 Jan 2003 05:56:56 -0000	1.5
+++ tests/debugger/queens.exp2	29 Jan 2003 02:55:34 -0000
@@ -1,45 +1,48 @@
-       1:      1  1 CALL pred queens.main/2-0 (cc_multi) queens.m:17
+      E1:     C1  1 CALL pred queens.main/2-0 (cc_multi) queens.m:17
 mdb> echo on
 Command echo enabled.
+mdb> register --quiet
 mdb> retry 1
 not that many ancestors
 mdb> print *
        DCG_0 (arg 1)          	state('<<c_pointer>>')
-mdb> 
-       2:      2  2 CALL pred queens.data/1-0 (det) queens.m:39 (queens.m:15)
+mdb> b data
+ 0: + stop  interface pred queens.data/1-0 (det)
+mdb> continue
+      E2:     C2  2 CALL pred queens.data/1-0 (det) queens.m:39 (queens.m:15)
+mdb> delete 0
+ 0: E stop  interface pred queens.data/1-0 (det)
 mdb> print *
 mdb: there are no live variables.
 mdb> 
-       3:      2  2 EXIT pred queens.data/1-0 (det) queens.m:39 (queens.m:15)
+      E3:     C2  2 EXIT pred queens.data/1-0 (det) queens.m:39 (queens.m:15)
 mdb> print *
        HeadVar__1             	[1, 2, 3, 4, 5]
 mdb> 
-       4:      3  2 CALL pred queens.queen/2-0 (nondet) queens.m:41 (queens.m:15)
+      E4:     C3  2 CALL pred queens.queen/2-0 (nondet) queens.m:41 (queens.m:15)
 mdb> print *
        Data (arg 1)           	[1, 2, 3, 4, 5]
 mdb> 
-       5:      4  3 CALL pred queens.qperm/2-0 (nondet) queens.m:45 (queens.m:42)
+      E5:     C4  3 CALL pred queens.qperm/2-0 (nondet) queens.m:45 (queens.m:42)
 mdb> print *
        HeadVar__1             	[1, 2, 3, 4, 5]
 mdb> print_optionals on
-optional values are  being printed
 mdb> print *
        HeadVar__1             	[1, 2, 3, 4, 5]
        TypeInfo_for_T         	int
 mdb> print_optionals off
-optional values are not being printed
 mdb> print *
        HeadVar__1             	[1, 2, 3, 4, 5]
 mdb> 
-       6:      4  3 SWTC pred queens.qperm/2-0 (nondet) s2; queens.m:46
+      E6:     C4  3 SWTC pred queens.qperm/2-0 (nondet) s2; queens.m:46
 mdb> print *
        HeadVar__1             	[1, 2, 3, 4, 5]
 mdb> 
-       7:      5  4 CALL pred queens.qdelete/3-0 (nondet) queens.m:51 (queens.m:47)
+      E7:     C5  4 CALL pred queens.qdelete/3-0 (nondet) queens.m:51 (queens.m:47)
 mdb> print *
        HeadVar__2             	[1, 2, 3, 4, 5]
 mdb> 
-       8:      5  4 DISJ pred queens.qdelete/3-0 (nondet) c2;d1; queens.m:51
+      E8:     C5  4 DISJ pred queens.qdelete/3-0 (nondet) c2;d1; queens.m:51
 mdb> print *
        HeadVar__2             	[1, 2, 3, 4, 5]
 mdb> level 1
@@ -47,7 +50,7 @@
    1  pred queens.qperm/2-0 (nondet) queens.m:47
 mdb> level -d 1
 Ancestor level set to 1:
-   1       5       4    3  pred queens.qperm/2-0 (nondet) queens.m:47
+   1      E5      C4    3  pred queens.qperm/2-0 (nondet) queens.m:47
 mdb> context nextline
 Contexts will be printed on the next line.
 mdb> level 1
@@ -56,7 +59,7 @@
       queens.m:47
 mdb> level -d 1
 Ancestor level set to 1:
-   1       5       4    3  pred queens.qperm/2-0 (nondet)
+   1      E5      C4    3  pred queens.qperm/2-0 (nondet)
                            queens.m:47
 mdb> context prevline
 Contexts will be printed on the previous line.
@@ -66,7 +69,7 @@
       pred queens.qperm/2-0 (nondet)
 mdb> level -d 1
 Ancestor level set to 1:
-   1       5       4    3  queens.m:47
+   1      E5      C4    3  queens.m:47
                            pred queens.qperm/2-0 (nondet)
 mdb> print *
        HeadVar__1             	[1, 2, 3, 4, 5]
@@ -80,7 +83,7 @@
 mdb> print *
        Data (arg 1)           	[1, 2, 3, 4, 5]
 mdb> 
-       9:      5  4 EXIT queens.m:51 (from queens.m:47)
+      E9:     C5  4 EXIT queens.m:51 (from queens.m:47)
                          pred queens.qdelete/3-0 (nondet)
 mdb> print HeadVar__1
        HeadVar__1             	1
@@ -89,95 +92,95 @@
 mdb> print HeadVar__3
        HeadVar__3             	[2, 3, 4, 5]
 mdb> 
-      10:      6  4 CALL queens.m:45 (from queens.m:49)
+     E10:     C6  4 CALL queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
 mdb> print *
        HeadVar__1             	[2, 3, 4, 5]
 mdb> 
-      11:      6  4 SWTC queens.m:46
+     E11:     C6  4 SWTC queens.m:46
                          pred queens.qperm/2-0 (nondet) s2;
 mdb> print *
        HeadVar__1             	[2, 3, 4, 5]
 mdb> 
-      12:      7  5 CALL queens.m:51 (from queens.m:47)
+     E12:     C7  5 CALL queens.m:51 (from queens.m:47)
                          pred queens.qdelete/3-0 (nondet)
 mdb> print *
        HeadVar__2             	[2, 3, 4, 5]
 mdb> 
-      13:      7  5 DISJ queens.m:51
+     E13:     C7  5 DISJ queens.m:51
                          pred queens.qdelete/3-0 (nondet) c2;d1;
 mdb> print *
        HeadVar__2             	[2, 3, 4, 5]
 mdb> 
-      14:      7  5 EXIT queens.m:51 (from queens.m:47)
+     E14:     C7  5 EXIT queens.m:51 (from queens.m:47)
                          pred queens.qdelete/3-0 (nondet)
 mdb> print *
        HeadVar__1             	2
        HeadVar__2             	[2, 3, 4, 5]
        HeadVar__3             	[3, 4, 5]
 mdb> 
-      15:      8  5 CALL queens.m:45 (from queens.m:49)
+     E15:     C8  5 CALL queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
-mdb> goto -a 20
-      16:      8  5 SWTC queens.m:46
+mdb> goto -a 21
+     E16:     C8  5 SWTC queens.m:46
                          pred queens.qperm/2-0 (nondet) s2;
-      17:      9  6 CALL queens.m:51 (from queens.m:47)
+     E17:     C9  6 CALL queens.m:51 (from queens.m:47)
                          pred queens.qdelete/3-0 (nondet)
-      18:      9  6 DISJ queens.m:51
+     E18:     C9  6 DISJ queens.m:51
                          pred queens.qdelete/3-0 (nondet) c2;d1;
-      19:      9  6 EXIT queens.m:51 (from queens.m:47)
+     E19:     C9  6 EXIT queens.m:51 (from queens.m:47)
                          pred queens.qdelete/3-0 (nondet)
-      20:     10  6 CALL queens.m:45 (from queens.m:49)
+     E20:    C10  6 CALL queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
 mdb> stack
    0    4* pred queens.qperm/2-0 (nondet) (queens.m:45 and others)
    4       pred queens.queen/2-0 (nondet) (queens.m:42)
    5       pred queens.main/2-0 (cc_multi) (queens.m:15)
 mdb> stack -d
-   0      20      10    6 pred queens.qperm/2-0 (nondet) (queens.m:45) (empty)
-   1      15       8    5 pred queens.qperm/2-0 (nondet) (queens.m:49) s2;c3;
-   2      10       6    4 pred queens.qperm/2-0 (nondet) (queens.m:49) s2;c3;
-   3       5       4    3 pred queens.qperm/2-0 (nondet) (queens.m:49) s2;c3;
-   4       4       3    2 pred queens.queen/2-0 (nondet) (queens.m:42) c2;
-   5       1       1    1 pred queens.main/2-0 (cc_multi) (queens.m:15) ?;c2;q!;
+   0     E20     C10    6 pred queens.qperm/2-0 (nondet) (queens.m:45) (empty)
+   1     E15      C8    5 pred queens.qperm/2-0 (nondet) (queens.m:49) s2;c3;
+   2     E10      C6    4 pred queens.qperm/2-0 (nondet) (queens.m:49) s2;c3;
+   3      E5      C4    3 pred queens.qperm/2-0 (nondet) (queens.m:49) s2;c3;
+   4      E4      C3    2 pred queens.queen/2-0 (nondet) (queens.m:42) c2;
+   5      E1      C1    1 pred queens.main/2-0 (cc_multi) (queens.m:15) ?;c2;q!;
 mdb> print *
        HeadVar__1             	[4, 5]
 mdb> 
-      21:     10  6 SWTC queens.m:46
+     E21:    C10  6 SWTC queens.m:46
                          pred queens.qperm/2-0 (nondet) s2;
 mdb> retry
-      20:     10  6 CALL queens.m:45 (from queens.m:49)
+     E20:    C10  6 CALL queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
 mdb> print *
        HeadVar__1             	[4, 5]
 mdb> finish -a
-      21:     10  6 SWTC queens.m:46
+     E21:    C10  6 SWTC queens.m:46
                          pred queens.qperm/2-0 (nondet) s2;
-      22:     11  7 CALL queens.m:51 (from queens.m:47)
+     E22:    C11  7 CALL queens.m:51 (from queens.m:47)
                          pred queens.qdelete/3-0 (nondet)
-      23:     11  7 DISJ queens.m:51
+     E23:    C11  7 DISJ queens.m:51
                          pred queens.qdelete/3-0 (nondet) c2;d1;
-      24:     11  7 EXIT queens.m:51 (from queens.m:47)
+     E24:    C11  7 EXIT queens.m:51 (from queens.m:47)
                          pred queens.qdelete/3-0 (nondet)
-      25:     12  7 CALL queens.m:45 (from queens.m:49)
+     E25:    C12  7 CALL queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
-      26:     12  7 SWTC queens.m:46
+     E26:    C12  7 SWTC queens.m:46
                          pred queens.qperm/2-0 (nondet) s2;
-      27:     13  8 CALL queens.m:51 (from queens.m:47)
+     E27:    C13  8 CALL queens.m:51 (from queens.m:47)
                          pred queens.qdelete/3-0 (nondet)
-      28:     13  8 DISJ queens.m:51
+     E28:    C13  8 DISJ queens.m:51
                          pred queens.qdelete/3-0 (nondet) c2;d1;
-      29:     13  8 EXIT queens.m:51 (from queens.m:47)
+     E29:    C13  8 EXIT queens.m:51 (from queens.m:47)
                          pred queens.qdelete/3-0 (nondet)
-      30:     14  8 CALL queens.m:45 (from queens.m:49)
+     E30:    C14  8 CALL queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
-      31:     14  8 SWTC queens.m:45
+     E31:    C14  8 SWTC queens.m:45
                          pred queens.qperm/2-0 (nondet) s1;
-      32:     14  8 EXIT queens.m:45 (from queens.m:49)
+     E32:    C14  8 EXIT queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
-      33:     12  7 EXIT queens.m:45 (from queens.m:49)
+     E33:    C12  7 EXIT queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
-      34:     10  6 EXIT queens.m:45 (from queens.m:49)
+     E34:    C10  6 EXIT queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
 mdb> register --quiet
 mdb> break print_list
@@ -185,41 +188,51 @@
 mdb> break qdelete
  1: + stop  interface pred queens.qdelete/3-0 (nondet)
 mdb> continue -a
-      35:      8  5 EXIT queens.m:45 (from queens.m:49)
+     E35:     C8  5 EXIT queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
-      36:      6  4 EXIT queens.m:45 (from queens.m:49)
+     E36:     C6  4 EXIT queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
-      37:      4  3 EXIT queens.m:45 (from queens.m:42)
+     E37:     C4  3 EXIT queens.m:45 (from queens.m:42)
                          pred queens.qperm/2-0 (nondet)
-      38:     15  3 CALL queens.m:55 (from queens.m:43)
+     E38:    C15  3 CALL queens.m:55 (from queens.m:43)
                          pred queens.safe/1-0 (semidet)
-      39:     15  3 SWTC queens.m:56
+     E39:    C15  3 SWTC queens.m:56
                          pred queens.safe/1-0 (semidet) s2;
-      40:     16  4 CALL queens.m:60 (from queens.m:57)
+     E40:    C16  4 CALL queens.m:60 (from queens.m:57)
                          pred queens.nodiag/3-0 (semidet)
-      41:     16  4 SWTC queens.m:61
+     E41:    C16  4 SWTC queens.m:61
                          pred queens.nodiag/3-0 (semidet) s2;
-      42:     16  4 THEN queens.m:65
+     E42:    C17  5 CALL int.m:NNNN (from queens.m:62)
+                         func int.-/2-0 (det)
+     E43:    C17  5 EXIT int.m:NNNN (from queens.m:62)
+                         func int.-/2-0 (det)
+     E44:    C18  5 CALL int.m:NNNN (from queens.m:63)
+                         func int.-/2-0 (det)
+     E45:    C18  5 EXIT int.m:NNNN (from queens.m:63)
+                         func int.-/2-0 (det)
+     E46:    C16  4 COND queens.m:64
+                         pred queens.nodiag/3-0 (semidet) s2;c6;?;
+     E47:    C16  4 THEN queens.m:65
                          pred queens.nodiag/3-0 (semidet) s2;c6;t;
-      43:     16  4 FAIL queens.m:60 (from queens.m:57)
+     E48:    C16  4 FAIL queens.m:60 (from queens.m:57)
                          pred queens.nodiag/3-0 (semidet)
-      44:     15  3 FAIL queens.m:55 (from queens.m:43)
+     E49:    C15  3 FAIL queens.m:55 (from queens.m:43)
                          pred queens.safe/1-0 (semidet)
-      45:      4  3 REDO queens.m:45 (from queens.m:42)
+     E50:     C4  3 REDO queens.m:45 (from queens.m:42)
                          pred queens.qperm/2-0 (nondet)
-      46:      6  4 REDO queens.m:45 (from queens.m:49)
+     E51:     C6  4 REDO queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
-      47:      8  5 REDO queens.m:45 (from queens.m:49)
+     E52:     C8  5 REDO queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
-      48:     10  6 REDO queens.m:45 (from queens.m:49)
+     E53:    C10  6 REDO queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
-      49:     12  7 REDO queens.m:45 (from queens.m:49)
+     E54:    C12  7 REDO queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
-      50:     14  8 REDO queens.m:45 (from queens.m:49)
+     E55:    C14  8 REDO queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
-      51:     14  8 FAIL queens.m:45 (from queens.m:49)
+     E56:    C14  8 FAIL queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
-      52:     13  8 REDO queens.m:51 (from queens.m:47)
+     E57:    C13  8 REDO queens.m:51 (from queens.m:47)
                          pred queens.qdelete/3-0 (nondet)
 mdb> break info
  0: + stop  interface pred queens.print_list/3-0 (det)
@@ -228,74 +241,74 @@
  0: + stop  interface pred queens.print_list/3-0 (det)
  1: + stop  interface pred queens.qdelete/3-0 (nondet)
 mdb> step -aS 5
-      53:     13  8 DISJ queens.m:52
+     E58:    C13  8 DISJ queens.m:52
                          pred queens.qdelete/3-0 (nondet) c2;d2;
-      54:     17  9 CALL queens.m:51 (from queens.m:53)
+     E59:    C19  9 CALL queens.m:51 (from queens.m:53)
                          pred queens.qdelete/3-0 (nondet)
-      55:     17  9 FAIL queens.m:51 (from queens.m:53)
+     E60:    C19  9 FAIL queens.m:51 (from queens.m:53)
                          pred queens.qdelete/3-0 (nondet)
-      56:     13  8 FAIL queens.m:51 (from queens.m:47)
+     E61:    C13  8 FAIL queens.m:51 (from queens.m:47)
                          pred queens.qdelete/3-0 (nondet)
-      57:     12  7 FAIL queens.m:45 (from queens.m:49)
+     E62:    C12  7 FAIL queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
 mdb> disable 1
  1: - stop  interface pred queens.qdelete/3-0 (nondet)
 mdb> retry 4
-       5:      4  3 CALL queens.m:45 (from queens.m:42)
+      E5:     C4  3 CALL queens.m:45 (from queens.m:42)
                          pred queens.qperm/2-0 (nondet)
 mdb> break 49
  2: + stop  linenumber queens.m:49
 mdb> continue -n
-      10:      6  4 CALL queens.m:45 (from queens.m:49)
+     E10:     C6  4 CALL queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
 mdb> continue -n
-      15:      8  5 CALL queens.m:45 (from queens.m:49)
+     E15:     C8  5 CALL queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
 mdb> continue -n
-      20:     10  6 CALL queens.m:45 (from queens.m:49)
+     E20:    C10  6 CALL queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
 mdb> continue -n
-      25:     12  7 CALL queens.m:45 (from queens.m:49)
+     E25:    C12  7 CALL queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
 mdb> continue -n
-      30:     14  8 CALL queens.m:45 (from queens.m:49)
+     E30:    C14  8 CALL queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
 mdb> continue -n
-      32:     14  8 EXIT queens.m:45 (from queens.m:49)
+     E32:    C14  8 EXIT queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
 mdb> return
-      33:     12  7 EXIT queens.m:45 (from queens.m:49)
+     E33:    C12  7 EXIT queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
-      34:     10  6 EXIT queens.m:45 (from queens.m:49)
+     E34:    C10  6 EXIT queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
-      35:      8  5 EXIT queens.m:45 (from queens.m:49)
+     E35:     C8  5 EXIT queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
-      36:      6  4 EXIT queens.m:45 (from queens.m:49)
+     E36:     C6  4 EXIT queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
-      38:     15  3 CALL queens.m:55 (from queens.m:43)
+     E38:    C15  3 CALL queens.m:55 (from queens.m:43)
                          pred queens.safe/1-0 (semidet)
 mdb> continue -n
-      46:      6  4 REDO queens.m:45 (from queens.m:49)
+     E51:     C6  4 REDO queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
 mdb> continue -n
-      47:      8  5 REDO queens.m:45 (from queens.m:49)
+     E52:     C8  5 REDO queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
 mdb> forward
-      48:     10  6 REDO queens.m:45 (from queens.m:49)
+     E53:    C10  6 REDO queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
-      49:     12  7 REDO queens.m:45 (from queens.m:49)
+     E54:    C12  7 REDO queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
-      50:     14  8 REDO queens.m:45 (from queens.m:49)
+     E55:    C14  8 REDO queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
-      51:     14  8 FAIL queens.m:45 (from queens.m:49)
+     E56:    C14  8 FAIL queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
-      53:     13  8 DISJ queens.m:52
+     E58:    C13  8 DISJ queens.m:52
                          pred queens.qdelete/3-0 (nondet) c2;d2;
 mdb> continue -n
-      57:     12  7 FAIL queens.m:45 (from queens.m:49)
+     E62:    C12  7 FAIL queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
 mdb> continue -n
-      64:     19  7 CALL queens.m:45 (from queens.m:49)
+     E63:    C20  7 CALL queens.m:45 (from queens.m:49)
                          pred queens.qperm/2-0 (nondet)
 mdb> delete *
  0: E stop  interface pred queens.print_list/3-0 (det)
@@ -305,12 +318,12 @@
  0: + stop  interface pred queens.main/2-0 (cc_multi)
 mdb> continue -n
 [1, 3, 5, 2, 4]
-     720:      1  1 EXIT queens.m:17
+     E64:     C1  1 EXIT queens.m:17
                          pred queens.main/2-0 (cc_multi)
 mdb> retry
 Retry across I/O operations is not always safe.
 Are you sure you want to do it? yes
-       1:      1  1 CALL queens.m:17
+      E1:     C1  1 CALL queens.m:17
                          pred queens.main/2-0 (cc_multi)
 mdb> continue -n -S
 [1, 3, 5, 2, 4]
Index: tests/debugger/retry.exp2
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/retry.exp2,v
retrieving revision 1.5
diff -u -u -r1.5 retry.exp2
--- tests/debugger/retry.exp2	17 Jan 2003 05:56:56 -0000	1.5
+++ tests/debugger/retry.exp2	29 Jan 2003 03:13:51 -0000
@@ -10,7 +10,9 @@
  0: + stop  interface pred retry.det_without_cut_1/2-0 (det)
 mdb> continue -a
       E2:     C2  2 CALL pred retry.det_without_cut/2-0 (det)
-      E3:     C3  3 CALL pred retry.det_without_cut_1/2-0 (det)
+      E3:     C3  3 CALL func int.+/2-0 (det)
+      E4:     C3  3 EXIT func int.+/2-0 (det)
+      E5:     C4  3 CALL pred retry.det_without_cut_1/2-0 (det)
 mdb> disable 0
  0: - stop  interface pred retry.det_without_cut_1/2-0 (det)
 mdb> retry
@@ -20,7 +22,7 @@
    1       pred retry.det_without_cut/2-0 (det)
    2       pred retry.main/2-0 (det)
 mdb> finish
-      E4:     C3  3 EXIT pred retry.det_without_cut_1/2-0 (det)
+      E6:     C4  3 EXIT pred retry.det_without_cut_1/2-0 (det)
 mdb> retry 1
       E2:     C2  2 CALL pred retry.det_without_cut/2-0 (det)
 mdb> stack
@@ -29,32 +31,34 @@
 mdb> break det_without_cut_2
  1: + stop  interface pred retry.det_without_cut_2/2-0 (det)
 mdb> continue -a
-      E3:     C3  3 CALL pred retry.det_without_cut_1/2-0 (det)
-      E5:     C4  4 CALL pred retry.det_without_cut_2/2-0 (det)
+      E3:     C3  3 CALL func int.+/2-0 (det)
+      E4:     C3  3 EXIT func int.+/2-0 (det)
+      E5:     C4  3 CALL pred retry.det_without_cut_1/2-0 (det)
+      E7:     C5  4 CALL pred retry.det_without_cut_2/2-0 (det)
 mdb> delete *
  0: D stop  interface pred retry.det_without_cut_1/2-0 (det)
  1: E stop  interface pred retry.det_without_cut_2/2-0 (det)
 mdb> retry 2
       E2:     C2  2 CALL pred retry.det_without_cut/2-0 (det)
 mdb> finish
-      E6:     C2  2 EXIT pred retry.det_without_cut/2-0 (det)
+      E8:     C2  2 EXIT pred retry.det_without_cut/2-0 (det)
 mdb> stack
    0       pred retry.det_without_cut/2-0 (det)
    1       pred retry.main/2-0 (det)
 mdb> break det_with_cut_1
  0: + stop  interface pred retry.det_with_cut_1/2-0 (nondet)
 mdb> continue -a
-      E7:     C5  2 CALL pred retry.det_with_cut/2-0 (det)
-      E8:     C5  2 COND pred retry.det_with_cut/2-0 (det) ?;
-      E9:     C6  3 CALL pred retry.det_with_cut_1/2-0 (nondet)
+      E9:     C6  2 CALL pred retry.det_with_cut/2-0 (det)
+     E10:     C6  2 COND pred retry.det_with_cut/2-0 (det) ?;
+     E11:     C7  3 CALL pred retry.det_with_cut_1/2-0 (nondet)
 mdb> delete *
  0: E stop  interface pred retry.det_with_cut_1/2-0 (nondet)
 mdb> finish
-     E10:     C6  3 EXIT pred retry.det_with_cut_1/2-0 (nondet)
+     E12:     C7  3 EXIT pred retry.det_with_cut_1/2-0 (nondet)
 mdb> retry 1
-      E7:     C5  2 CALL pred retry.det_with_cut/2-0 (det)
+      E9:     C6  2 CALL pred retry.det_with_cut/2-0 (det)
 mdb> finish
-     E11:     C5  2 EXIT pred retry.det_with_cut/2-0 (det)
+     E13:     C6  2 EXIT pred retry.det_with_cut/2-0 (det)
 mdb> stack
    0       pred retry.det_with_cut/2-0 (det)
    1       pred retry.main/2-0 (det)
@@ -64,30 +68,34 @@
  0: + stop  interface pred retry.det_with_cut_2/2-0 (det)
 mdb> continue -a
       E2:     C2  2 CALL pred retry.det_without_cut/2-0 (det)
-      E3:     C3  3 CALL pred retry.det_without_cut_1/2-0 (det)
-      E5:     C4  4 CALL pred retry.det_without_cut_2/2-0 (det)
-     E12:     C4  4 EXIT pred retry.det_without_cut_2/2-0 (det)
-      E4:     C3  3 EXIT pred retry.det_without_cut_1/2-0 (det)
-      E6:     C2  2 EXIT pred retry.det_without_cut/2-0 (det)
-      E7:     C5  2 CALL pred retry.det_with_cut/2-0 (det)
-      E8:     C5  2 COND pred retry.det_with_cut/2-0 (det) ?;
-      E9:     C6  3 CALL pred retry.det_with_cut_1/2-0 (nondet)
-     E13:     C6  3 DISJ pred retry.det_with_cut_1/2-0 (nondet) c2;d1;
-     E14:     C7  4 CALL pred retry.det_with_cut_2/2-0 (det)
+      E3:     C3  3 CALL func int.+/2-0 (det)
+      E4:     C3  3 EXIT func int.+/2-0 (det)
+      E5:     C4  3 CALL pred retry.det_without_cut_1/2-0 (det)
+      E7:     C5  4 CALL pred retry.det_without_cut_2/2-0 (det)
+     E14:     C5  4 EXIT pred retry.det_without_cut_2/2-0 (det)
+     E15:     C8  4 CALL func int.*/2-0 (det)
+     E16:     C8  4 EXIT func int.*/2-0 (det)
+      E6:     C4  3 EXIT pred retry.det_without_cut_1/2-0 (det)
+      E8:     C2  2 EXIT pred retry.det_without_cut/2-0 (det)
+      E9:     C6  2 CALL pred retry.det_with_cut/2-0 (det)
+     E10:     C6  2 COND pred retry.det_with_cut/2-0 (det) ?;
+     E11:     C7  3 CALL pred retry.det_with_cut_1/2-0 (nondet)
+     E17:     C7  3 DISJ pred retry.det_with_cut_1/2-0 (nondet) c2;d1;
+     E18:     C9  4 CALL pred retry.det_with_cut_2/2-0 (det)
 mdb> delete *
  0: E stop  interface pred retry.det_with_cut_2/2-0 (det)
 mdb> break nondet
  0: + stop  interface pred retry.nondet/2-0 (multi)
 mdb> continue
-     E15:     C8  3 CALL pred retry.nondet/2-0 (multi)
+     E19:    C10  3 CALL pred retry.nondet/2-0 (multi)
 mdb> print *
        X0 (arg 1)             	4
 mdb> break nondet_2
  1: + stop  interface pred retry.nondet_2/2-0 (det)
 mdb> continue
-     E16:     C9  4 CALL pred retry.nondet_2/2-0 (det)
+     E20:    C11  4 CALL pred retry.nondet_2/2-0 (det)
 mdb> retry 1
-     E15:     C8  3 CALL pred retry.nondet/2-0 (multi)
+     E19:    C10  3 CALL pred retry.nondet/2-0 (multi)
 mdb> print *
        X0 (arg 1)             	4
 mdb> delete *
@@ -101,28 +109,28 @@
 9
 40 41 
 50 51 
-     E17:    C10  2 CALL pred retry.fib/2-0 (det)
+     E21:    C12  2 CALL pred retry.fib/2-0 (det)
 mdb> print *
        N (arg 1)              	15
 mdb> continue
-     E18:    C11  3 CALL pred retry.fib/2-0 (det)
+     E22:    C13  3 CALL pred retry.fib/2-0 (det)
 mdb> print *
        N (arg 1)              	14
 mdb> continue
-     E19:    C12  4 CALL pred retry.fib/2-0 (det)
+     E23:    C14  4 CALL pred retry.fib/2-0 (det)
 mdb> continue
-     E20:    C13  5 CALL pred retry.fib/2-0 (det)
+     E24:    C15  5 CALL pred retry.fib/2-0 (det)
 mdb> step
-     E21:    C13  5 COND pred retry.fib/2-0 (det) c2;e;e;c2;?;
+     E25:    C15  5 COND pred retry.fib/2-0 (det) c2;e;e;c2;?;
 mdb> retry 2
-     E18:    C11  3 CALL pred retry.fib/2-0 (det)
+     E22:    C13  3 CALL pred retry.fib/2-0 (det)
 mdb> print *
        N (arg 1)              	14
 mdb> next
-     E22:    C11  3 COND pred retry.fib/2-0 (det) c2;e;e;c2;?;
+     E26:    C13  3 COND pred retry.fib/2-0 (det) c2;e;e;c2;?;
 mdb> retry 1
-     E17:    C10  2 CALL pred retry.fib/2-0 (det)
+     E21:    C12  2 CALL pred retry.fib/2-0 (det)
 mdb> finish -n
-     E23:    C10  2 EXIT pred retry.fib/2-0 (det)
+     E27:    C12  2 EXIT pred retry.fib/2-0 (det)
 mdb> continue -n -S
 987
Index: tests/debugger/declarative/args.exp
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/declarative/args.exp,v
retrieving revision 1.6
diff -u -u -r1.6 args.exp
--- tests/debugger/declarative/args.exp	17 Jan 2003 05:57:00 -0000	1.6
+++ tests/debugger/declarative/args.exp	29 Jan 2003 03:57:11 -0000
@@ -11,7 +11,15 @@
 mdb> dd
 p(1, 16, 3, 20, 5)
 Valid? no
-my_succeed
++(1, 3) = 4
+Valid? yes
+*(3, 5) = 15
+Valid? yes
++(1, 15) = 16
+Valid? yes
+*(4, 5) = 20
+Valid? yes
+semidet_succeed
 Valid? yes
 Found incorrect contour:
 p(1, 16, 3, 20, 5)
@@ -24,6 +32,10 @@
 mdb> dd
 p(1, -2, 3, 2, 5)
 Valid? no
+-(1, 3) = -2
+Valid? yes
+-(5, 3) = 2
+Valid? yes
 Found incorrect contour:
 p(1, -2, 3, 2, 5)
 Is this a bug? yes
Index: tests/debugger/declarative/args.inp
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/declarative/args.inp,v
retrieving revision 1.3
diff -u -u -r1.3 args.inp
--- tests/debugger/declarative/args.inp	18 Aug 2000 10:59:35 -0000	1.3
+++ tests/debugger/declarative/args.inp	29 Jan 2003 03:57:04 -0000
@@ -7,10 +7,16 @@
 no
 yes
 yes
+yes
+yes
+yes
+yes
 continue
 finish
 dd
 no
+yes
+yes
 yes
 continue
 finish
Index: tests/debugger/declarative/args.m
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/declarative/args.m,v
retrieving revision 1.1
diff -u -u -r1.1 args.m
--- tests/debugger/declarative/args.m	22 Feb 2000 10:46:14 -0000	1.1
+++ tests/debugger/declarative/args.m	29 Jan 2003 03:51:55 -0000
@@ -3,12 +3,12 @@
 :- import_module io.
 :- pred main(io__state::di, io__state::uo) is cc_multi.
 :- implementation.
-:- import_module std_util, int.
+:- import_module library_forwarding.
 
 main -->
 	(
 		{ p(1, X, 3, Y, 5) },
-		{ my_fail }
+		{ semidet_fail }
 	->
 		io__write_int(X),
 		io__nl,
@@ -22,19 +22,7 @@
 :- mode p(in, out, in, out, in) is nondet.
 
 p(A, A + (B * C), B, (A + B) * C, C) :-
-	my_succeed.
+	semidet_succeed.
 p(A, A - B, B, C - B, C) :-
-	my_succeed.
-
-	% The purpose of the following two procedures is to ensure
-	% that the test cases work consistently in both debugging
-	% and non-debugging grades.
-	%
-:- pred my_succeed is semidet.
-my_succeed :-
 	semidet_succeed.
-
-:- pred my_fail is semidet.
-my_fail :-
-	semidet_fail.
 
Index: tests/debugger/declarative/backtrack.exp
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/declarative/backtrack.exp,v
retrieving revision 1.6
diff -u -u -r1.6 backtrack.exp
--- tests/debugger/declarative/backtrack.exp	17 Jan 2003 05:57:00 -0000	1.6
+++ tests/debugger/declarative/backtrack.exp	29 Jan 2003 08:03:59 -0000
@@ -1,22 +1,31 @@
-       1:      1  1 CALL pred backtrack.main/2-0 (det) backtrack.m:8
+       1:      1  1 CALL pred backtrack.main/2-0 (det) backtrack.m:9
 mdb> echo on
 Command echo enabled.
 mdb> register --quiet
 mdb> break p
  0: + stop  interface pred backtrack.p/2-0 (det)
 mdb> continue
-       2:      2  2 CALL pred backtrack.p/2-0 (det) backtrack.m:23 (backtrack.m:9)
+       2:      2  2 CALL pred backtrack.p/2-0 (det) backtrack.m:24 (backtrack.m:10)
 mdb> finish
-      17:      2  2 EXIT pred backtrack.p/2-0 (det) backtrack.m:23 (backtrack.m:9)
+      23:      2  2 EXIT pred backtrack.p/2-0 (det) backtrack.m:24 (backtrack.m:10)
 mdb> dd
 p(1, no)
 Valid? no
 q(1, 1)
 Valid? yes
+Call >(1, 5)
+No solutions.
+Complete? yes
 q(1, 2)
 Valid? yes
+Call >(2, 5)
+No solutions.
+Complete? yes
 q(1, 3)
 Valid? yes
+Call >(3, 5)
+No solutions.
+Complete? yes
 Call q(1, _)
 Solutions:
 	q(1, 1)
@@ -26,6 +35,6 @@
 Found incorrect contour:
 p(1, no)
 Is this a bug? yes
-      17:      2  2 EXIT pred backtrack.p/2-0 (det) backtrack.m:23 (backtrack.m:9)
+      23:      2  2 EXIT pred backtrack.p/2-0 (det) backtrack.m:24 (backtrack.m:10)
 mdb> continue
 no
Index: tests/debugger/declarative/backtrack.inp
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/declarative/backtrack.inp,v
retrieving revision 1.4
diff -u -u -r1.4 backtrack.inp
--- tests/debugger/declarative/backtrack.inp	18 Aug 2000 10:59:36 -0000	1.4
+++ tests/debugger/declarative/backtrack.inp	29 Jan 2003 04:03:40 -0000
@@ -10,4 +10,7 @@
 yes
 yes
 yes
+yes
+yes
+yes
 continue
Index: tests/debugger/declarative/backtrack.m
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/declarative/backtrack.m,v
retrieving revision 1.1
diff -u -u -r1.1 backtrack.m
--- tests/debugger/declarative/backtrack.m	17 Feb 2000 06:47:49 -0000	1.1
+++ tests/debugger/declarative/backtrack.m	29 Jan 2003 04:00:00 -0000
@@ -3,7 +3,8 @@
 :- import_module io.
 :- pred main(io__state::di, io__state::uo) is det.
 :- implementation.
-:- import_module std_util, int, bool.
+:- import_module bool.
+:- import_module library_forwarding.
 
 main -->
 	{ p(1, R) },
Index: tests/debugger/declarative/big.exp
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/declarative/big.exp,v
retrieving revision 1.8
diff -u -u -r1.8 big.exp
--- tests/debugger/declarative/big.exp	17 Jan 2003 05:57:00 -0000	1.8
+++ tests/debugger/declarative/big.exp	29 Jan 2003 04:41:42 -0000
@@ -1,13 +1,13 @@
-      E1:     C1  1 CALL pred big.main/2-0 (det) big.m:9
+      E1:     C1  1 CALL pred big.main/2-0 (det) big.m:10
 mdb> echo on
 Command echo enabled.
 mdb> register --quiet
 mdb> break p
  0: + stop  interface pred big.p/1-0 (nondet)
 mdb> continue
-      E2:     C2  2 CALL pred big.p/1-0 (nondet) big.m:23 (big.m:11)
+      E2:     C2  2 CALL pred big.p/1-0 (nondet) big.m:24 (big.m:12)
 mdb> finish
-      E3:     C2  2 EXIT pred big.p/1-0 (nondet) big.m:23 (big.m:11)
+      E3:     C2  2 EXIT pred big.p/1-0 (nondet) big.m:24 (big.m:12)
 mdb> dd
 p(-12)
 Valid? no
@@ -27,11 +27,11 @@
 Found incorrect contour:
 p(-12)
 Is this a bug? yes
-      E3:     C2  2 EXIT pred big.p/1-0 (nondet) big.m:23 (big.m:11)
+      E3:     C2  2 EXIT pred big.p/1-0 (nondet) big.m:24 (big.m:12)
 mdb> continue
-      E4:     C2  2 REDO pred big.p/1-0 (nondet) big.m:23 (big.m:11)
+      E4:     C2  2 REDO pred big.p/1-0 (nondet) big.m:24 (big.m:12)
 mdb> finish
-      E5:     C2  2 EXIT pred big.p/1-0 (nondet) big.m:23 (big.m:11)
+      E5:     C2  2 EXIT pred big.p/1-0 (nondet) big.m:24 (big.m:12)
 mdb> dd
 p(-14)
 Valid? no
@@ -42,11 +42,11 @@
 Found incorrect contour:
 p(-14)
 Is this a bug? yes
-      E5:     C2  2 EXIT pred big.p/1-0 (nondet) big.m:23 (big.m:11)
+      E5:     C2  2 EXIT pred big.p/1-0 (nondet) big.m:24 (big.m:12)
 mdb> continue
-      E6:     C2  2 REDO pred big.p/1-0 (nondet) big.m:23 (big.m:11)
+      E6:     C2  2 REDO pred big.p/1-0 (nondet) big.m:24 (big.m:12)
 mdb> finish
-      E7:     C2  2 EXIT pred big.p/1-0 (nondet) big.m:23 (big.m:11)
+      E7:     C2  2 EXIT pred big.p/1-0 (nondet) big.m:24 (big.m:12)
 mdb> dd
 p(-20)
 Valid? no
@@ -56,6 +56,8 @@
 Valid? yes
 d(15, 45)
 Valid? yes
+>(45, 5)
+Valid? yes
 Call c(1, _)
 Solutions:
 	c(1, 15)
@@ -67,11 +69,11 @@
 Found incorrect contour:
 p(-20)
 Is this a bug? yes
-      E7:     C2  2 EXIT pred big.p/1-0 (nondet) big.m:23 (big.m:11)
+      E7:     C2  2 EXIT pred big.p/1-0 (nondet) big.m:24 (big.m:12)
 mdb> continue
-      E8:     C2  2 REDO pred big.p/1-0 (nondet) big.m:23 (big.m:11)
+      E8:     C2  2 REDO pred big.p/1-0 (nondet) big.m:24 (big.m:12)
 mdb> finish
-      E9:     C2  2 EXIT pred big.p/1-0 (nondet) big.m:23 (big.m:11)
+      E9:     C2  2 EXIT pred big.p/1-0 (nondet) big.m:24 (big.m:12)
 mdb> dd
 p(-22)
 Valid? no
@@ -82,11 +84,11 @@
 Found incorrect contour:
 p(-22)
 Is this a bug? yes
-      E9:     C2  2 EXIT pred big.p/1-0 (nondet) big.m:23 (big.m:11)
+      E9:     C2  2 EXIT pred big.p/1-0 (nondet) big.m:24 (big.m:12)
 mdb> continue
-     E10:     C2  2 REDO pred big.p/1-0 (nondet) big.m:23 (big.m:11)
+     E10:     C2  2 REDO pred big.p/1-0 (nondet) big.m:24 (big.m:12)
 mdb> finish
-     E11:     C2  2 EXIT pred big.p/1-0 (nondet) big.m:23 (big.m:11)
+     E11:     C2  2 EXIT pred big.p/1-0 (nondet) big.m:24 (big.m:12)
 mdb> dd
 p(2)
 Valid? no
@@ -98,8 +100,14 @@
 Valid? yes
 g(6, -10)
 Valid? yes
+Call >(-10, 0)
+No solutions.
+Complete? yes
 g(7, -11)
 Valid? yes
+Call >(-11, 0)
+No solutions.
+Complete? yes
 Call c(2, _)
 Solutions:
 	c(2, 6)
@@ -108,11 +116,11 @@
 Found incorrect contour:
 p(2)
 Is this a bug? yes
-     E11:     C2  2 EXIT pred big.p/1-0 (nondet) big.m:23 (big.m:11)
+     E11:     C2  2 EXIT pred big.p/1-0 (nondet) big.m:24 (big.m:12)
 mdb> continue
-     E12:     C2  2 REDO pred big.p/1-0 (nondet) big.m:23 (big.m:11)
+     E12:     C2  2 REDO pred big.p/1-0 (nondet) big.m:24 (big.m:12)
 mdb> finish
-     E13:     C2  2 FAIL pred big.p/1-0 (nondet) big.m:23 (big.m:11)
+     E13:     C2  2 FAIL pred big.p/1-0 (nondet) big.m:24 (big.m:12)
 mdb> dd
 Call p(_)
 Solutions:
@@ -126,6 +134,8 @@
 Valid? yes
 d(3, 9)
 Valid? yes
+>(9, 5)
+Valid? yes
 Call c(0, _)
 Solutions:
 	c(0, 2)
@@ -149,9 +159,11 @@
 Valid? yes
 g(9, 99)
 Valid? yes
+>(99, 0)
+Valid? yes
 Found partially uncovered atom:
 p(_)
 Is this a bug? yes
-     E13:     C2  2 FAIL pred big.p/1-0 (nondet) big.m:23 (big.m:11)
+     E13:     C2  2 FAIL pred big.p/1-0 (nondet) big.m:24 (big.m:12)
 mdb> continue
 no.
Index: tests/debugger/declarative/big.inp
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/declarative/big.inp,v
retrieving revision 1.5
diff -u -u -r1.5 big.inp
--- tests/debugger/declarative/big.inp	18 Aug 2000 10:59:36 -0000	1.5
+++ tests/debugger/declarative/big.inp	29 Jan 2003 04:41:36 -0000
@@ -30,6 +30,7 @@
 yes
 yes
 yes
+yes
 continue
 finish
 dd
@@ -48,10 +49,14 @@
 yes
 yes
 yes
+yes
+yes
 continue
 finish
 dd
 no
+yes
+yes
 yes
 yes
 yes
Index: tests/debugger/declarative/big.m
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/declarative/big.m,v
retrieving revision 1.1
diff -u -u -r1.1 big.m
--- tests/debugger/declarative/big.m	6 Jan 2000 05:15:04 -0000	1.1
+++ tests/debugger/declarative/big.m	29 Jan 2003 04:05:22 -0000
@@ -4,7 +4,8 @@
 :- pred main(io__state, io__state).
 :- mode main(di, uo) is det.
 :- implementation.
-:- import_module bool, int, std_util.
+:- import_module bool.
+:- import_module library_forwarding.
 
 main -->
 	{
Index: tests/debugger/declarative/catch.exp2
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/declarative/catch.exp2,v
retrieving revision 1.2
diff -u -u -r1.2 catch.exp2
--- tests/debugger/declarative/catch.exp2	17 Jan 2003 05:57:00 -0000	1.2
+++ tests/debugger/declarative/catch.exp2	29 Jan 2003 08:35:24 -0000
@@ -7,7 +7,7 @@
 mdb> continue
        2:      2  2 CALL pred catch.p/2-0 (cc_multi) catch.m:18 (catch.m:9)
 mdb> finish
-      11:      2  2 EXIT pred catch.p/2-0 (cc_multi) catch.m:18 (catch.m:9)
+      13:      2  2 EXIT pred catch.p/2-0 (cc_multi) catch.m:18 (catch.m:9)
 mdb> dd
 p(1, exception(univ_cons("q: bad input")))
 Valid? no
@@ -17,12 +17,12 @@
 the following: code that catches exceptions.
 The debugger is a work in progress, and this is not supported in the
 current version.
-      11:      2  2 EXIT pred catch.p/2-0 (cc_multi) catch.m:18 (catch.m:9)
+      13:      2  2 EXIT pred catch.p/2-0 (cc_multi) catch.m:18 (catch.m:9)
 mdb> continue
 exception(univ_cons("q: bad input"))
-      16:      8  2 CALL pred catch.p/2-0 (cc_multi) catch.m:18 (catch.m:12)
+     174:     61  2 CALL pred catch.p/2-0 (cc_multi) catch.m:18 (catch.m:12)
 mdb> finish
-      23:      8  2 EXIT pred catch.p/2-0 (cc_multi) catch.m:18 (catch.m:12)
+     183:     61  2 EXIT pred catch.p/2-0 (cc_multi) catch.m:18 (catch.m:12)
 mdb> dd
 p(2, succeeded(2))
 Valid? no
@@ -33,8 +33,8 @@
 Found incorrect contour:
 try(q(2), succeeded(2))
 Is this a bug? yes
-      22:      9  3 EXIT pred exception.try/2-0 (cc_multi) exception.m:321 (catch.m:19)
+     182:     62  3 EXIT pred exception.try/2-0 (cc_multi) exception.m:321 (catch.m:19)
 mdb> continue
-      23:      8  2 EXIT pred catch.p/2-0 (cc_multi) catch.m:18 (catch.m:12)
+     183:     61  2 EXIT pred catch.p/2-0 (cc_multi) catch.m:18 (catch.m:12)
 mdb> continue
 succeeded(2)
Index: tests/debugger/declarative/func_call.exp
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/declarative/func_call.exp,v
retrieving revision 1.3
diff -u -u -r1.3 func_call.exp
--- tests/debugger/declarative/func_call.exp	17 Jan 2003 05:57:01 -0000	1.3
+++ tests/debugger/declarative/func_call.exp	29 Jan 2003 08:06:37 -0000
@@ -7,20 +7,39 @@
 mdb> continue
        2:      2  2 CALL func func_call.fib/1-0 (det) func_call.m:14 (func_call.m:9)
 mdb> finish -n
-      69:      2  2 EXIT func func_call.fib/1-0 (det) func_call.m:14 (func_call.m:9)
+     151:      2  2 EXIT func func_call.fib/1-0 (det) func_call.m:14 (func_call.m:9)
 mdb> dd
 fib(6) = 9
 Valid? no
+Call =<(6, 1)
+No solutions.
+Complete? yes
+-(6, 1) = 5
+Valid? yes
 fib(5) = 6
 Valid? no
+Call =<(5, 1)
+No solutions.
+Complete? yes
+-(5, 1) = 4
+Valid? yes
 fib(4) = 4
 Valid? no
+Call =<(4, 1)
+No solutions.
+Complete? yes
+-(4, 1) = 3
+Valid? yes
 fib(3) = 3
 Valid? yes
+-(4, 3) = 1
+Valid? yes
 fib(1) = 1
 Valid? yes
++(3, 1) = 4
+Valid? yes
 Found incorrect contour:
 fib(4) = 4
 Is this a bug? yes
-      35:      4  4 EXIT func func_call.fib/1-0 (det) func_call.m:14 (func_call.m:20)
+      75:      8  4 EXIT func func_call.fib/1-0 (det) func_call.m:14 (func_call.m:20)
 mdb> quit -y
Index: tests/debugger/declarative/func_call.exp2
===================================================================
RCS file: tests/debugger/declarative/func_call.exp2
diff -N tests/debugger/declarative/func_call.exp2
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/debugger/declarative/func_call.exp2	29 Jan 2003 07:10:03 -0000
@@ -0,0 +1,45 @@
+       1:      1  1 CALL pred func_call.main/2-0 (det) func_call.m:8
+mdb> echo on
+Command echo enabled.
+mdb> register --quiet
+mdb> break fib
+ 0: + stop  interface func func_call.fib/1-0 (det)
+mdb> continue
+       2:      2  2 CALL func func_call.fib/1-0 (det) func_call.m:14 (func_call.m:9)
+mdb> finish -n
+     233:      2  2 EXIT func func_call.fib/1-0 (det) func_call.m:14 (func_call.m:9)
+mdb> dd
+fib(6) = 9
+Valid? no
+Call =<(6, 1)
+No solutions.
+Complete? yes
+-(6, 1) = 5
+Valid? yes
+fib(5) = 6
+Valid? no
+Call =<(5, 1)
+No solutions.
+Complete? yes
+-(5, 1) = 4
+Valid? yes
+fib(4) = 4
+Valid? no
+Call =<(4, 1)
+No solutions.
+Complete? yes
+-(4, 1) = 3
+Valid? yes
+fib(3) = 3
+Valid? yes
+-(4, 3) = 1
+Valid? yes
+fib(1) = 1
+Valid? yes
++(3, 1) = 4
+Valid? yes
+Found incorrect contour:
+fib(4) = 4
+Is this a bug? yes
+     115:     12  4 EXIT func func_call.fib/1-0 (det) func_call.m:14 (func_call.m:20)
+mdb> quit -y
Index: tests/debugger/declarative/func_call.inp
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/declarative/func_call.inp,v
retrieving revision 1.1
diff -u -u -r1.1 func_call.inp
--- tests/debugger/declarative/func_call.inp	1 Oct 2000 04:09:55 -0000	1.1
+++ tests/debugger/declarative/func_call.inp	29 Jan 2003 07:09:58 -0000
@@ -5,8 +5,16 @@
 finish -n
 dd
 no
+yes
+yes
 no
+yes
+yes
 no
+yes
+yes
+yes
+yes
 yes
 yes
 yes
Index: tests/debugger/declarative/func_call.m
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/declarative/func_call.m,v
retrieving revision 1.1
diff -u -u -r1.1 func_call.m
--- tests/debugger/declarative/func_call.m	1 Oct 2000 04:09:55 -0000	1.1
+++ tests/debugger/declarative/func_call.m	29 Jan 2003 06:57:13 -0000
@@ -3,7 +3,7 @@
 :- import_module io.
 :- pred main(io__state::di, io__state::uo) is det.
 :- implementation.
-:- import_module int.
+:- import_module library_forwarding.
 
 main -->
 	io__write_int(fib(6)),
Index: tests/debugger/declarative/gcf.exp2
===================================================================
RCS file: tests/debugger/declarative/gcf.exp2
diff -N tests/debugger/declarative/gcf.exp2
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/debugger/declarative/gcf.exp2	29 Jan 2003 07:13:50 -0000
@@ -0,0 +1,57 @@
+       1:      1  1 CALL pred gcf.main/2-0 (cc_multi) gcf.m:8
+mdb> echo on
+Command echo enabled.
+mdb> register --quiet
+mdb> break a
+ 0: + stop  interface pred gcf.a/1-0 (nondet)
+mdb> continue
+       3:      2  2 CALL pred gcf.a/1-0 (nondet) gcf.m:26 (gcf.m:10)
+mdb> finish
+      27:      2  2 EXIT pred gcf.a/1-0 (nondet) gcf.m:26 (gcf.m:10)
+mdb> dd
+a(11)
+Valid? no
+g(2)
+Valid? yes
+c(2, 11)
+Valid? yes
+f(11)
+Valid? yes
+Found incorrect contour:
+a(11)
+Is this a bug? yes
+      27:      2  2 EXIT pred gcf.a/1-0 (nondet) gcf.m:26 (gcf.m:10)
+mdb> continue
+      30:      2  2 REDO pred gcf.a/1-0 (nondet) gcf.m:26 (gcf.m:10)
+mdb> finish
+      38:      2  2 EXIT pred gcf.a/1-0 (nondet) gcf.m:26 (gcf.m:10)
+mdb> dd
+a(12)
+Valid? no
+c(2, 12)
+Valid? yes
+f(12)
+Valid? yes
+Found incorrect contour:
+a(12)
+Is this a bug? yes
+      38:      2  2 EXIT pred gcf.a/1-0 (nondet) gcf.m:26 (gcf.m:10)
+mdb> continue
+      41:      2  2 REDO pred gcf.a/1-0 (nondet) gcf.m:26 (gcf.m:10)
+mdb> finish
+      54:      2  2 EXIT pred gcf.a/1-0 (nondet) gcf.m:26 (gcf.m:10)
+mdb> dd
+a(20)
+Valid? no
+g(3)
+Valid? yes
+c(3, 20)
+Valid? yes
+f(20)
+Valid? yes
+Found incorrect contour:
+a(20)
+Is this a bug? yes
+      54:      2  2 EXIT pred gcf.a/1-0 (nondet) gcf.m:26 (gcf.m:10)
+mdb> continue
+yes(20)
Index: tests/debugger/declarative/gcf.m
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/declarative/gcf.m,v
retrieving revision 1.1
diff -u -u -r1.1 gcf.m
--- tests/debugger/declarative/gcf.m	2 Jun 1999 07:28:55 -0000	1.1
+++ tests/debugger/declarative/gcf.m	29 Jan 2003 07:13:45 -0000
@@ -3,7 +3,7 @@
 :- import_module io.
 :- pred main(io__state::di, io__state::uo) is cc_multi.
 :- implementation.
-:- import_module std_util, int.
+:- import_module int, std_util.
 
 main -->
 	{
Index: tests/debugger/declarative/higher_order.exp2
===================================================================
RCS file: tests/debugger/declarative/higher_order.exp2
diff -N tests/debugger/declarative/higher_order.exp2
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/debugger/declarative/higher_order.exp2	29 Jan 2003 07:14:30 -0000
@@ -0,0 +1,21 @@
+       1:      1  1 CALL pred higher_order.main/2-0 (det) higher_order.m:8
+mdb> echo on
+Command echo enabled.
+mdb> register --quiet
+mdb> break p
+ 0: + stop  interface pred higher_order.p/2-0 (det)
+mdb> continue
+       2:      2  2 CALL pred higher_order.p/2-0 (det) higher_order.m:15 (higher_order.m:9)
+mdb> finish
+      11:      2  2 EXIT pred higher_order.p/2-0 (det) higher_order.m:15 (higher_order.m:9)
+mdb> dd
+p(3, 81)
+Valid? no
+q('IntroducedFrom__pred__p__16__1', 3, 81)
+Valid? yes
+Found incorrect contour:
+p(3, 81)
+Is this a bug? yes
+      11:      2  2 EXIT pred higher_order.p/2-0 (det) higher_order.m:15 (higher_order.m:9)
+mdb> continue
+81
Index: tests/debugger/declarative/ho2.exp2
===================================================================
RCS file: tests/debugger/declarative/ho2.exp2
diff -N tests/debugger/declarative/ho2.exp2
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/debugger/declarative/ho2.exp2	29 Jan 2003 07:15:18 -0000
@@ -0,0 +1,45 @@
+       1:      1  1 CALL pred ho2.main/2-0 (det) ho2.m:8
+mdb> echo on
+Command echo enabled.
+mdb> register --quiet
+mdb> break p
+ 0: + stop  interface pred ho2.p/3-0 (det)
+mdb> continue
+       2:      2  2 CALL pred ho2.p/3-0 (det) ho2.m:21 (ho2.m:9)
+mdb> finish
+      11:      2  2 EXIT pred ho2.p/3-0 (det) ho2.m:21 (ho2.m:9)
+mdb> dd
+p(0, 3, 27)
+Valid? no
+q('IntroducedFrom__pred__p__22__1'(3), 3, 27)
+Valid? yes
+Found incorrect contour:
+p(0, 3, 27)
+Is this a bug? yes
+      11:      2  2 EXIT pred ho2.p/3-0 (det) ho2.m:21 (ho2.m:9)
+mdb> continue
+      12:      7  2 CALL pred ho2.p/3-0 (det) ho2.m:21 (ho2.m:10)
+mdb> finish
+      21:      7  2 EXIT pred ho2.p/3-0 (det) ho2.m:21 (ho2.m:10)
+mdb> dd
+p(1, 3, 27)
+Valid? no
+Found incorrect contour:
+p(1, 3, 27)
+Is this a bug? yes
+      21:      7  2 EXIT pred ho2.p/3-0 (det) ho2.m:21 (ho2.m:10)
+mdb> continue
+      22:     12  2 CALL pred ho2.p/3-0 (det) ho2.m:21 (ho2.m:11)
+mdb> finish
+      31:     12  2 EXIT pred ho2.p/3-0 (det) ho2.m:21 (ho2.m:11)
+mdb> dd
+p(2, 4, 64)
+Valid? no
+q('IntroducedFrom__pred__p__22__1'(4), 4, 64)
+Valid? yes
+Found incorrect contour:
+p(2, 4, 64)
+Is this a bug? yes
+      31:     12  2 EXIT pred ho2.p/3-0 (det) ho2.m:21 (ho2.m:11)
+mdb> continue
+27, 27, 64
Index: tests/debugger/declarative/ho5.exp2
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/declarative/ho5.exp2,v
retrieving revision 1.2
diff -u -u -r1.2 ho5.exp2
--- tests/debugger/declarative/ho5.exp2	17 Jan 2003 05:57:01 -0000	1.2
+++ tests/debugger/declarative/ho5.exp2	29 Jan 2003 07:15:45 -0000
@@ -24,9 +24,9 @@
       12:      3  3 EXCP pred ho5.p/2-0 (det) c2; ho5.m:18 (exception.m:NNNN)
 mdb> continue
 exception(univ_cons('<<function>>'))
-      19:     10  3 CALL pred ho5.p/2-0 (det) ho5.m:18 (exception.m:NNNN)
+     175:     62  3 CALL pred ho5.p/2-0 (det) ho5.m:18 (exception.m:NNNN)
 mdb> finish
-      28:     10  3 EXCP pred ho5.p/2-0 (det) c2; ho5.m:18 (exception.m:NNNN)
+     184:     62  3 EXCP pred ho5.p/2-0 (det) c2; ho5.m:18 (exception.m:NNNN)
 mdb> dd
 Call p(2, _)
 Throws zero
@@ -37,6 +37,6 @@
 p(2, _)
 zero
 Is this a bug? yes
-      28:     10  3 EXCP pred ho5.p/2-0 (det) c2; ho5.m:18 (exception.m:NNNN)
+     184:     62  3 EXCP pred ho5.p/2-0 (det) c2; ho5.m:18 (exception.m:NNNN)
 mdb> continue
 exception(univ_cons('<<function>>'))
Index: tests/debugger/declarative/ite_2.exp
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/declarative/ite_2.exp,v
retrieving revision 1.2
diff -u -u -r1.2 ite_2.exp
--- tests/debugger/declarative/ite_2.exp	17 Jan 2003 05:57:01 -0000	1.2
+++ tests/debugger/declarative/ite_2.exp	29 Jan 2003 08:08:22 -0000
@@ -13,27 +13,33 @@
 mdb> continue
        2:      2  2 CALL pred ite_2.ite/3-0 (det) ite_2.m:27 (ite_2.m:9)
 mdb> finish
-       9:      2  2 EXIT pred ite_2.ite/3-0 (det) ite_2.m:27 (ite_2.m:9)
+      11:      2  2 EXIT pred ite_2.ite/3-0 (det) ite_2.m:27 (ite_2.m:9)
 mdb> dd
 ite(a, 1, 1)
 Valid? no
 a(1, 1)
 Valid? yes
+Call >(1, 1)
+No solutions.
+Complete? yes
 c(1, 1)
 Valid? yes
 Found incorrect contour:
 ite(a, 1, 1)
 Is this a bug? yes
-       9:      2  2 EXIT pred ite_2.ite/3-0 (det) ite_2.m:27 (ite_2.m:9)
+      11:      2  2 EXIT pred ite_2.ite/3-0 (det) ite_2.m:27 (ite_2.m:9)
 mdb> continue
-      10:      5  2 CALL pred ite_2.ite/3-1 (multi) ite_2.m:27 (ite_2.m:10)
+      12:      6  2 CALL pred ite_2.ite/3-1 (multi) ite_2.m:27 (ite_2.m:10)
 mdb> finish
-      23:      5  2 EXIT pred ite_2.ite/3-1 (multi) ite_2.m:27 (ite_2.m:10)
+      29:      6  2 EXIT pred ite_2.ite/3-1 (multi) ite_2.m:27 (ite_2.m:10)
 mdb> dd
 ite(b, 1, 1)
 Valid? no
 b(1, 0)
 Valid? yes
+Call >(0, 1)
+No solutions.
+Complete? yes
 b(1, 1)
 Valid? yes
 Call b(1, _)
@@ -44,7 +50,7 @@
 Found incorrect contour:
 ite(b, 1, 1)
 Is this a bug? yes
-      23:      5  2 EXIT pred ite_2.ite/3-1 (multi) ite_2.m:27 (ite_2.m:10)
+      29:      6  2 EXIT pred ite_2.ite/3-1 (multi) ite_2.m:27 (ite_2.m:10)
 mdb> continue
 ite(a, 1, 1).
 ite(b, 1, 1).
Index: tests/debugger/declarative/ite_2.exp2
===================================================================
RCS file: tests/debugger/declarative/ite_2.exp2
diff -N tests/debugger/declarative/ite_2.exp2
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/debugger/declarative/ite_2.exp2	29 Jan 2003 07:45:35 -0000
@@ -0,0 +1,57 @@
+       1:      1  1 CALL pred ite_2.main/2-0 (cc_multi) ite_2.m:8
+mdb> echo on
+Command echo enabled.
+mdb> register --quiet
+mdb> break ite
+Ambiguous procedure specification. The matches are:
+0: pred ite_2.ite/3-1 (multi)
+1: pred ite_2.ite/3-0 (det)
+
+Which do you want to put a breakpoint on (0-1 or *)? *
+ 0: + stop  interface pred ite_2.ite/3-1 (multi)
+ 1: + stop  interface pred ite_2.ite/3-0 (det)
+mdb> continue
+       2:      2  2 CALL pred ite_2.ite/3-0 (det) ite_2.m:27 (ite_2.m:9)
+mdb> finish
+      13:      2  2 EXIT pred ite_2.ite/3-0 (det) ite_2.m:27 (ite_2.m:9)
+mdb> dd
+ite(a, 1, 1)
+Valid? no
+a(1, 1)
+Valid? yes
+Call >(1, 1)
+No solutions.
+Complete? yes
+c(1, 1)
+Valid? yes
+Found incorrect contour:
+ite(a, 1, 1)
+Is this a bug? yes
+      13:      2  2 EXIT pred ite_2.ite/3-0 (det) ite_2.m:27 (ite_2.m:9)
+mdb> continue
+      14:      7  2 CALL pred ite_2.ite/3-1 (multi) ite_2.m:27 (ite_2.m:10)
+mdb> finish
+      35:      7  2 EXIT pred ite_2.ite/3-1 (multi) ite_2.m:27 (ite_2.m:10)
+mdb> dd
+ite(b, 1, 1)
+Valid? no
+b(1, 0)
+Valid? yes
+Call >(0, 1)
+No solutions.
+Complete? yes
+b(1, 1)
+Valid? yes
+Call b(1, _)
+Solutions:
+	b(1, 0)
+	b(1, 1)
+Complete? yes
+Found incorrect contour:
+ite(b, 1, 1)
+Is this a bug? yes
+      35:      7  2 EXIT pred ite_2.ite/3-1 (multi) ite_2.m:27 (ite_2.m:10)
+mdb> continue
+ite(a, 1, 1).
+ite(b, 1, 1).
+
Index: tests/debugger/declarative/ite_2.inp
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/declarative/ite_2.inp,v
retrieving revision 1.1
diff -u -u -r1.1 ite_2.inp
--- tests/debugger/declarative/ite_2.inp	2 May 2002 07:44:02 -0000	1.1
+++ tests/debugger/declarative/ite_2.inp	29 Jan 2003 07:45:20 -0000
@@ -9,10 +9,12 @@
 yes
 yes
 yes
+yes
 continue
 finish
 dd
 no
+yes
 yes
 yes
 yes
Index: tests/debugger/declarative/ite_2.m
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/declarative/ite_2.m,v
retrieving revision 1.1
diff -u -u -r1.1 ite_2.m
--- tests/debugger/declarative/ite_2.m	21 Jan 2000 02:44:30 -0000	1.1
+++ tests/debugger/declarative/ite_2.m	29 Jan 2003 07:45:28 -0000
@@ -3,7 +3,7 @@
 :- import_module io.
 :- pred main(io__state::di, io__state::uo) is cc_multi.
 :- implementation.
-:- import_module int.
+:- import_module library_forwarding.
 
 main -->
 	{ ite(a, 1, M) },
Index: tests/debugger/declarative/library_forwarding.m
===================================================================
RCS file: tests/debugger/declarative/library_forwarding.m
diff -N tests/debugger/declarative/library_forwarding.m
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/debugger/declarative/library_forwarding.m	29 Jan 2003 04:05:20 -0000
@@ -0,0 +1,43 @@
+% Procedures which just forward to the corresponding procedures
+% in the library, to avoid differences in behaviour depending
+% on whether the library was compiled with debugging enabled.
+:- module library_forwarding.
+
+:- interface.
+
+:- func int + int = int.
+:- func int * int = int.
+:- func int - int = int.
+:- func - int = int.
+
+:- func int mod int = int.
+
+:- pred int =< int is semidet.
+:- mode in =< in is semidet.
+
+:- pred int > int is semidet.
+:- mode in > in is semidet.
+
+:- pred semidet_succeed is semidet.
+:- pred semidet_fail is semidet.
+
+:- implementation.
+
+:- import_module int, std_util.
+
+X + Y = 'int__+'(X, Y).
+X * Y = 'int__*'(X, Y).
+X - Y = 'int__-'(X, Y).
+- X = 'int__-'(X).
+
+X mod Y = 'int__mod'(X, Y).
+
+X =< Y :- 'int__=<'(X, Y).
+X > Y :- 'int__>'(X, Y).
+
+semidet_succeed :-
+	std_util__semidet_succeed.
+
+semidet_fail :-
+	std_util__semidet_fail.
+
Index: tests/debugger/declarative/lpe_example.exp2
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/declarative/lpe_example.exp2,v
retrieving revision 1.8
diff -u -u -r1.8 lpe_example.exp2
--- tests/debugger/declarative/lpe_example.exp2	17 Jan 2003 05:57:01 -0000	1.8
+++ tests/debugger/declarative/lpe_example.exp2	29 Jan 2003 08:36:30 -0000
@@ -9,7 +9,7 @@
 mdb> continue
        3:      3  3 CALL pred lpe_example.p/2-0 (nondet)
 mdb> finish
-      11:      3  3 EXIT pred lpe_example.p/2-0 (nondet)
+      13:      3  3 EXIT pred lpe_example.p/2-0 (nondet)
 mdb> dd
 p(1, 13)
 Valid? no
@@ -20,11 +20,11 @@
 Found incorrect contour:
 p(1, 13)
 Is this a bug? yes
-      11:      3  3 EXIT pred lpe_example.p/2-0 (nondet)
+      13:      3  3 EXIT pred lpe_example.p/2-0 (nondet)
 mdb> continue
-      12:      3  3 REDO pred lpe_example.p/2-0 (nondet)
+      14:      3  3 REDO pred lpe_example.p/2-0 (nondet)
 mdb> finish
-      16:      3  3 EXIT pred lpe_example.p/2-0 (nondet)
+      20:      3  3 EXIT pred lpe_example.p/2-0 (nondet)
 mdb> dd
 p(1, 23)
 Valid? no
@@ -33,22 +33,22 @@
 Found incorrect contour:
 p(1, 23)
 Is this a bug? yes
-      16:      3  3 EXIT pred lpe_example.p/2-0 (nondet)
+      20:      3  3 EXIT pred lpe_example.p/2-0 (nondet)
 mdb> continue
-      17:      3  3 REDO pred lpe_example.p/2-0 (nondet)
+      21:      3  3 REDO pred lpe_example.p/2-0 (nondet)
 mdb> finish
-      21:      3  3 EXIT pred lpe_example.p/2-0 (nondet)
+      25:      3  3 EXIT pred lpe_example.p/2-0 (nondet)
 mdb> dd
 p(1, 3)
 Valid? no
 Found incorrect contour:
 p(1, 3)
 Is this a bug? yes
-      21:      3  3 EXIT pred lpe_example.p/2-0 (nondet)
+      25:      3  3 EXIT pred lpe_example.p/2-0 (nondet)
 mdb> continue
-      22:      3  3 REDO pred lpe_example.p/2-0 (nondet)
+      26:      3  3 REDO pred lpe_example.p/2-0 (nondet)
 mdb> finish
-      23:      3  3 FAIL pred lpe_example.p/2-0 (nondet)
+      27:      3  3 FAIL pred lpe_example.p/2-0 (nondet)
 mdb> dd
 Call p(1, _)
 Solutions:
@@ -64,6 +64,6 @@
 Found partially uncovered atom:
 p(1, _)
 Is this a bug? yes
-      23:      3  3 FAIL pred lpe_example.p/2-0 (nondet)
+      27:      3  3 FAIL pred lpe_example.p/2-0 (nondet)
 mdb> continue
 [3, 13, 23]
Index: tests/debugger/declarative/neg_conj.exp2
===================================================================
RCS file: tests/debugger/declarative/neg_conj.exp2
diff -N tests/debugger/declarative/neg_conj.exp2
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/debugger/declarative/neg_conj.exp2	29 Jan 2003 07:19:15 -0000
@@ -0,0 +1,34 @@
+       1:      1  1 CALL pred neg_conj.main/2-0 (det) neg_conj.m:11
+mdb> echo on
+Command echo enabled.
+mdb> register --quiet
+mdb> break p
+ 0: + stop  interface pred neg_conj.p/1-0 (semidet)
+mdb> continue
+       3:      2  2 CALL pred neg_conj.p/1-0 (semidet) neg_conj.m:19 (neg_conj.m:9)
+mdb> finish
+      22:      2  2 EXIT pred neg_conj.p/1-0 (semidet) neg_conj.m:19 (neg_conj.m:9)
+mdb> dd
+p(0)
+Valid? no
+q(0, 0)
+Valid? yes
+Call r(0)
+No solutions.
+Complete? yes
+q(0, 1)
+Valid? yes
+Call r(1)
+No solutions.
+Complete? yes
+Call q(0, _)
+Solutions:
+	q(0, 0)
+	q(0, 1)
+Complete? yes
+Found incorrect contour:
+p(0)
+Is this a bug? yes
+      22:      2  2 EXIT pred neg_conj.p/1-0 (semidet) neg_conj.m:19 (neg_conj.m:9)
+mdb> continue
+yes.
Index: tests/debugger/declarative/negation.exp
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/declarative/negation.exp,v
retrieving revision 1.7
diff -u -u -r1.7 negation.exp
--- tests/debugger/declarative/negation.exp	17 Jan 2003 05:57:01 -0000	1.7
+++ tests/debugger/declarative/negation.exp	29 Jan 2003 08:04:56 -0000
@@ -7,7 +7,7 @@
 mdb> continue
        2:      2  2 CALL pred negation.p/2-0 (det) negation.m:29 (negation.m:14)
 mdb> finish
-      23:      2  2 EXIT pred negation.p/2-0 (det) negation.m:29 (negation.m:14)
+      31:      2  2 EXIT pred negation.p/2-0 (det) negation.m:29 (negation.m:14)
 mdb> dd
 p(1, 42)
 Valid? no
@@ -27,6 +27,6 @@
 Found incorrect contour:
 p(1, 42)
 Is this a bug? yes
-      23:      2  2 EXIT pred negation.p/2-0 (det) negation.m:29 (negation.m:14)
+      31:      2  2 EXIT pred negation.p/2-0 (det) negation.m:29 (negation.m:14)
 mdb> continue
 42
Index: tests/debugger/declarative/negation.exp2
===================================================================
RCS file: tests/debugger/declarative/negation.exp2
diff -N tests/debugger/declarative/negation.exp2
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/debugger/declarative/negation.exp2	29 Jan 2003 07:47:26 -0000
@@ -0,0 +1,32 @@
+       1:      1  1 CALL pred negation.main/2-0 (det) negation.m:13
+mdb> echo on
+Command echo enabled.
+mdb> register --quiet
+mdb> break p
+ 0: + stop  interface pred negation.p/2-0 (det)
+mdb> continue
+       2:      2  2 CALL pred negation.p/2-0 (det) negation.m:29 (negation.m:14)
+mdb> finish
+      39:      2  2 EXIT pred negation.p/2-0 (det) negation.m:29 (negation.m:14)
+mdb> dd
+p(1, 42)
+Valid? no
+r(1, 11)
+Valid? yes
+q(11)
+Valid? yes
+r(1, 21)
+Valid? yes
+q(21)
+Valid? yes
+Call r(1, _)
+Solutions:
+	r(1, 11)
+	r(1, 21)
+Complete? yes
+Found incorrect contour:
+p(1, 42)
+Is this a bug? yes
+      39:      2  2 EXIT pred negation.p/2-0 (det) negation.m:29 (negation.m:14)
+mdb> continue
+42
Index: tests/debugger/declarative/negation.m
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/declarative/negation.m,v
retrieving revision 1.2
diff -u -u -r1.2 negation.m
--- tests/debugger/declarative/negation.m	3 Jan 2000 02:22:52 -0000	1.2
+++ tests/debugger/declarative/negation.m	29 Jan 2003 07:49:06 -0000
@@ -8,7 +8,7 @@
 
 :- implementation.
 
-:- import_module int.
+:- import_module library_forwarding.
 
 main(S0, S) :-
 	p(1, X),
Index: tests/debugger/declarative/solutions.exp2
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/declarative/solutions.exp2,v
retrieving revision 1.3
diff -u -u -r1.3 solutions.exp2
--- tests/debugger/declarative/solutions.exp2	17 Jan 2003 05:57:02 -0000	1.3
+++ tests/debugger/declarative/solutions.exp2	29 Jan 2003 07:52:25 -0000
@@ -7,7 +7,7 @@
 mdb> continue
        2:      2  2 CALL pred solutions.p/2-0 (det) solutions.m:15 (solutions.m:9)
 mdb> finish
-      17:      2  2 EXIT pred solutions.p/2-0 (det) solutions.m:15 (solutions.m:9)
+      29:      2  2 EXIT pred solutions.p/2-0 (det) solutions.m:15 (solutions.m:9)
 mdb> dd
 p(1, [1, 2, 3])
 Valid? no
@@ -25,8 +25,12 @@
 	q(1, 2)
 	q(1, 3)
 Complete? yes
+//(3, 2) = 1
+Valid? yes
+//(2, 2) = 1
+Valid? yes
 Found incorrect contour:
 solutions(q(1), [1, 2, 3])
 Is this a bug? yes
-      16:      3  3 EXIT pred std_util.solutions/2-1 (det) std_util.m:NNNN (solutions.m:16)
+      28:      3  3 EXIT pred std_util.solutions/2-1 (det) std_util.m:NNNN (solutions.m:16)
 mdb> quit -y
Index: tests/debugger/declarative/solutions.inp2
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/declarative/solutions.inp2,v
retrieving revision 1.1
diff -u -u -r1.1 solutions.inp2
--- tests/debugger/declarative/solutions.inp2	8 Sep 2002 15:47:04 -0000	1.1
+++ tests/debugger/declarative/solutions.inp2	29 Jan 2003 07:52:18 -0000
@@ -11,4 +11,6 @@
 yes
 yes
 yes
+yes
+yes
 quit -y
Index: tests/debugger/declarative/throw.exp2
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/declarative/throw.exp2,v
retrieving revision 1.7
diff -u -u -r1.7 throw.exp2
--- tests/debugger/declarative/throw.exp2	17 Jan 2003 05:57:02 -0000	1.7
+++ tests/debugger/declarative/throw.exp2	29 Jan 2003 08:37:25 -0000
@@ -9,7 +9,7 @@
 mdb> continue
        3:      3  3 CALL pred throw.p/1-0 (cc_nondet) throw.m:20 (exception.m:NNNN)
 mdb> finish
-      34:      3  3 EXCP pred throw.p/1-0 (cc_nondet)
+      56:      3  3 EXCP pred throw.p/1-0 (cc_nondet)
 mdb> dd
 Call p(_)
 Throws "Too big"
@@ -23,12 +23,12 @@
 p(_)
 "Too big"
 Is this a bug? yes
-      34:      3  3 EXCP pred throw.p/1-0 (cc_nondet)
+      56:      3  3 EXCP pred throw.p/1-0 (cc_nondet)
 mdb> continue
 exception(univ_cons("Too big"))
-      41:     11  3 CALL pred throw.q/1-0 (semidet) throw.m:48 (exception.m:NNNN)
+     159:     54  3 CALL pred throw.q/1-0 (semidet) throw.m:48 (exception.m:NNNN)
 mdb> finish
-      76:     11  3 EXCP pred throw.q/1-0 (semidet)
+     212:     54  3 EXCP pred throw.q/1-0 (semidet)
 mdb> dd
 Call q(_)
 Throws "Too big"
@@ -42,6 +42,6 @@
 q(_)
 "Too big"
 Is this a bug? yes
-      76:     11  3 EXCP pred throw.q/1-0 (semidet)
+     212:     54  3 EXCP pred throw.q/1-0 (semidet)
 mdb> continue
 exception(univ_cons("Too big"))
--------------------------------------------------------------------------
mercury-reviews mailing list
post:  mercury-reviews at cs.mu.oz.au
administrative address: owner-mercury-reviews at cs.mu.oz.au
unsubscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: unsubscribe
subscribe:   Address: mercury-reviews-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------



More information about the reviews mailing list