[m-rev.] for review: don't allow inlining of builtins when tracing enabled

Ian MacLarty maclarty at cs.mu.OZ.AU
Fri Feb 18 18:08:10 AEDT 2005


This bug was causing some tests in debugger/declarative to fail because the
expected events for int.+ were not being generated.

I suspected the calls to int.+ were being inlined, so I gave the --no-inlining 
flag and then the events for int.+ were generated.

Once I had a passing and failing test case I created a dice and looked for 
the first predicate that was called in both cases, but through which a
different execution path was taken.  This took me directly to 
builtin_state where the bug was :-)

I'll try and get the dice command to find such labels automatically some time
in the future.

Estimated hours taken: 2
Branches: main

Fix a bug where builtin inlining was being done when a module was compiled
with tracing and the --trace-optimize option wasn't given.

compiler/hlds_pred.m
	Check that inlining is allowed when deciding whether to do inlining of
	builtins.

Index: compiler/hlds_pred.m
===================================================================
RCS file: /home/mercury1/repository/mercury/compiler/hlds_pred.m,v
retrieving revision 1.156
diff -u -r1.156 hlds_pred.m
--- compiler/hlds_pred.m	2 Feb 2005 02:58:41 -0000	1.156
+++ compiler/hlds_pred.m	17 Feb 2005 07:47:06 -0000
@@ -2913,13 +2913,16 @@
 	PredName = pred_info_name(PredInfo),
 	Arity = pred_info_orig_arity(PredInfo),
 	module_info_globals(ModuleInfo, Globals),
+	globals__lookup_bool_option(Globals, allow_inlining, AllowInlining),
 	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
+		( 
+			AllowInlining = yes, InlineBuiltins = yes
+		; 
+			CallerPredId = PredId
 		),
 		is_inline_builtin(ModuleName, PredName, ProcId, Arity)
 	->
--------------------------------------------------------------------------
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