[m-rev.] diff: improvement for semidet foreign_procs

Julien Fischer juliensf at cs.mu.OZ.AU
Mon Jun 13 02:30:03 AEST 2005


On Fri, 10 Jun 2005, Zoltan Somogyi wrote:

> compiler/pragma_c_gen.m:
> 	Generate somewhat faster code for semidet foreign_procs. Instead of
> 	storing the success indication into r1, which may require moving some
> 	data out of r1, stored it in a local C variable. Provide backward
> 	compatibility with existing semidet foreign_procs by #defining
> 	SUCCESS_INDICATOR to stand for this local variable in the foreign code.
>
> compiler/llds_out.m:
> 	Use the same name as pragma_c_gen when writing out this variable.
>
> runtime/mercury_types.h:
> 	Note that pragma_c_gen now temporarily redefines SUCCESS_INDICATOR.
>

This change has broken building the library when compiling
with '--opt-space' (which all of our machines use for the nightly
builds.)  The compiler aborts with:


	Uncaught Mercury exception:
	Software Error: map__lookup: key not found
		Key Type: ll_backend.llds.label
		Key Value: internal(14, proc(unqualified("array"),
			predicate, unqualified("array"), "lookup", 3, 0))
		Value Type: ll_backend.frameopt.block_info


I've committed the following in order to get the nightly tests on the
main branch up and running again:

Estimated hours taken: 0.1
Branches: main

library/Mercury.options:
	Workaround a problem cause by the change to the handling
	of the success indication for semidet preds.

Index: library/Mercury.options
===================================================================
RCS file: /home/mercury1/repository/mercury/library/Mercury.options,v
retrieving revision 1.5
diff -u -r1.5 Mercury.options
--- library/Mercury.options	12 Apr 2005 04:59:29 -0000	1.5
+++ library/Mercury.options	12 Jun 2005 14:51:49 -0000
@@ -18,6 +18,7 @@

 # Bug workarounds.
 MCFLAGS-std_util += --no-halt-at-warn
+MCFLAGS-array += --no-optimize-dups

 # io.m uses library features that are supported by POSIX but which are not
 # part of ANSI C, such as `struct stat', fileno(), and putenv().

Julien.
--------------------------------------------------------------------------
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