for review: bug fixes & cleanups in runtime/*

Fergus Henderson fjh at cs.mu.OZ.AU
Mon Nov 9 23:58:02 AEDT 1998


Hi,

Could someone please review this one?

--------------------

Estimated hours taken: 2

Various bug fixes and cleanups for the code in the runtime directory.

runtime/mercury_bootstrap.h:
runtime/mercury_regs.h:
runtime/mercury_stacks.h:
runtime/mercury_type_info.h:
	Move #defines that are there just for backwards compatibility
	into mercury_bootstrap.h.

runtime/process_getopt:
	Add MR_ prefixes to the names `_GETOPT_H', `no_arguments',
	and `required_argument' which are defined by mercury_getopt.h,
	to make mercury_getopt.h macro-namespace-clean.

runtime/mercury_getopt.h:
	Apply the new version of the process_getopt script.

runtime/mercury_imp.h:
	Make mercury_bootstrap the first header file that is #included,
	in case some of the macros defined in it are used in declarations
	in other header files.

runtime/mercury_memory.h:
	Delete duplicate definitions of MAX_REAL_REG, NUM_SPECIAL_REG,
	and MAX_VIRTUAL_REG -- these are all already defined in
	mercury_memory_zones.h.

runtime/mercury_memory_zones.h:
	Delete definition of NUM_SPECIAL_REG, since mercury_regorder.h
	already defines MR_NUM_SPECIAL_REG, which should be used instead
	of NUM_SPECIAL_REG.  The value of NUM_SPECIAL_REG was long
	obsolete.

runtime/mercury_regorder.h:
	Fix some bugs in the definition of MR_min_sol_hp_rec -- it was
	using `mr40', which is undefined, instead of `mr(40)'.
	Also add some comments.

runtime/mercury_regs.h:
	Fix a bug: use MR_NUM_SPECIAL_REGS instead of NUM_SPECIAL_REGS.
	Note that this bug fix unfortunately breaks backwards compatibility,
	at least for procedures with more than 32 arguments, since it
	affects the mapping from r(N) to the fake_reg array. 
	However, there was no alternative, since the old mapping was
	broken: for example, the old mapping used the same fake_reg
	slot for both r(41) and MR_global_hp.

runtime/mercury_bootstrap.h:
	Change MR_GRADE_PART_0 from `redofr' to `v1', and document that
	that part of the grade is a binary compatibility version number.
	The reason for changing the grade is to ensure that the change
	in binary backwards compatibility resulting from the changes
	to runtime/mercury_regs.h will cause link errors rather
	than just random behaviour for procedures with >32 arguments.

runtime/mercury_agc_debug.c:
	Use MR_NUM_SPECIAL_REGS instead of NUM_SPECIAL_REGS.
	Also add some XXX comments, since all of the places where
	NUM_SPECIAL_REGS was used are broken anyway -- they should be
	using MAX_FAKE_REG instead of MAX_REAL_REG + NUM_SPECIAL_REG.
	But I think the current definition is put there for efficiency,
	even though it's known to be broken for procedures with >32
	arguments, so I didn't change the code to use MAX_FAKE_REG.

Index: runtime/mercury_agc_debug.c
===================================================================
RCS file: /home/mercury1/repository/mercury/runtime/mercury_agc_debug.c,v
retrieving revision 1.6
diff -u -r1.6 mercury_agc_debug.c
--- mercury_agc_debug.c	1998/10/23 00:41:24	1.6
+++ mercury_agc_debug.c	1998/11/09 12:47:35
@@ -44,7 +44,8 @@
 		** the saved registers).
 		*/
 		restore_registers();
-		MR_copy_regs_to_saved_regs(MAX_REAL_REG + NUM_SPECIAL_REG,
+		/* XXX this is unsafe -- should use MAX_FAKE_REG */
+		MR_copy_regs_to_saved_regs(MAX_REAL_REG + MR_NUM_SPECIAL_REG,
 			saved_regs);
 
 		MR_hp = MR_ENGINE(debug_heap_zone->min);
@@ -55,7 +56,8 @@
 		fflush(NULL);
 		fprintf(stderr, "\n");
 
-		MR_copy_saved_regs_to_regs(MAX_REAL_REG + NUM_SPECIAL_REG,
+		/* XXX this is unsafe -- should use MAX_FAKE_REG */
+		MR_copy_saved_regs_to_regs(MAX_REAL_REG + MR_NUM_SPECIAL_REG,
 			saved_regs);
 		save_registers();
 		roots = roots->next;
@@ -126,8 +128,9 @@
 			** registers).
 			*/
 			restore_registers();
+			/* XXX this is unsafe -- should use MAX_FAKE_REG */
 			MR_copy_regs_to_saved_regs(MAX_REAL_REG +
-				NUM_SPECIAL_REG, saved_regs);
+				MR_NUM_SPECIAL_REG, saved_regs);
 
 			MR_hp = MR_ENGINE(debug_heap_zone->min);
 			MR_virtual_hp = MR_ENGINE(debug_heap_zone->min);
@@ -146,8 +149,9 @@
 				printf("\n");
 			}
 
+			/* XXX this is unsafe -- should use MAX_FAKE_REG */
 			MR_copy_saved_regs_to_regs(MAX_REAL_REG +
-				NUM_SPECIAL_REG, saved_regs);
+				MR_NUM_SPECIAL_REG, saved_regs);
 			save_registers();
 #endif	/* MR_DEBUG_AGC_PRINT_VARS */
 
Index: runtime/mercury_bootstrap.h
===================================================================
RCS file: /home/mercury1/repository/mercury/runtime/mercury_bootstrap.h,v
retrieving revision 1.1
diff -u -r1.1 mercury_bootstrap.h
--- mercury_bootstrap.h	1998/11/05 06:27:41	1.1
+++ mercury_bootstrap.h	1998/11/09 11:18:21
@@ -7,12 +7,37 @@
 /*
 ** mercury_bootstrap.h
 **
-** Temporary definitions only needed for bootstrapping.
+** Temporary definitions only needed for bootstrapping and/or
+** for backwards compatibility.  All of the definitions here
+** will go away eventually, so don't use them!
+**
+** This file should contain MACROS ONLY -- see mercury_imp.h for why.
 */
 
 #ifndef	MERCURY_BOOTSTRAP_H
 #define	MERCURY_BOOTSTRAP_H
 
 #define	NONDET_FIXED_SIZE	MR_NONDET_FIXED_SIZE
+
+#define succip		MR_succip
+#define hp		MR_hp
+#define sp		MR_sp
+#define curfr		MR_curfr
+#define maxfr		MR_maxfr
+
+#define TYPELAYOUT_UNASSIGNED_VALUE	(MR_TYPELAYOUT_UNASSIGNED_VALUE)
+#define TYPELAYOUT_UNUSED_VALUE		(MR_TYPELAYOUT_UNUSED_VALUE)
+#define TYPELAYOUT_STRING_VALUE		(MR_TYPELAYOUT_STRING_VALUE)
+#define TYPELAYOUT_FLOAT_VALUE		(MR_TYPELAYOUT_FLOAT_VALUE)
+#define TYPELAYOUT_INT_VALUE		(MR_TYPELAYOUT_INT_VALUE)
+#define TYPELAYOUT_CHARACTER_VALUE	(MR_TYPELAYOUT_CHARACTER_VALUE)
+#define TYPELAYOUT_UNIV_VALUE		(MR_TYPELAYOUT_UNIV_VALUE)
+#define TYPELAYOUT_PREDICATE_VALUE	(MR_TYPELAYOUT_PREDICATE_VALUE)
+#define TYPELAYOUT_VOID_VALUE		(MR_TYPELAYOUT_VOID_VALUE)
+#define TYPELAYOUT_ARRAY_VALUE		(MR_TYPELAYOUT_ARRAY_VALUE)
+#define TYPELAYOUT_TYPEINFO_VALUE	(MR_TYPELAYOUT_TYPEINFO_VALUE)
+#define TYPELAYOUT_C_POINTER_VALUE	(MR_TYPELAYOUT_C_POINTER_VALUE)
+
+#define	framevar(n)		MR_framevar((n) + 1)
 
 #endif	/* MERCURY_BOOTSTRAP_H */
Index: runtime/mercury_getopt.h
===================================================================
RCS file: /home/mercury1/repository/mercury/runtime/mercury_getopt.h,v
retrieving revision 1.4
diff -u -r1.4 mercury_getopt.h
--- mercury_getopt.h	1998/08/11 06:23:04	1.4
+++ mercury_getopt.h	1998/11/09 12:56:34
@@ -19,8 +19,8 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef _GETOPT_H
-#define _GETOPT_H 1
+#ifndef MERCURY_GETOPT_H
+#define MERCURY_GETOPT_H 1
 
 #ifdef	__cplusplus
 extern "C" {
@@ -63,8 +63,8 @@
    zero.
 
    The field `has_arg' is:
-   no_argument		(or 0) if the MR_option does not take an argument,
-   required_argument	(or 1) if the MR_option requires an argument,
+   MR_no_argument		(or 0) if the MR_option does not take an argument,
+   MR_required_argument	(or 1) if the MR_option requires an argument,
    MR_optional_argument 	(or 2) if the MR_option takes an MR_optional argument.
 
    If the field `flag' is not NULL, it points to a variable that is set
@@ -94,8 +94,8 @@
 
 /* Names for the values of the `has_arg' field of `struct MR_option'.  */
 
-#define	no_argument		0
-#define required_argument	1
+#define	MR_no_argument		0
+#define MR_required_argument	1
 #define MR_optional_argument	2
 
 #if defined (__STDC__) && __STDC__
@@ -130,4 +130,4 @@
 }
 #endif
 
-#endif /* _GETOPT_H */
+#endif /* MERCURY_GETOPT_H */
Index: runtime/mercury_imp.h
===================================================================
RCS file: /home/mercury1/repository/mercury/runtime/mercury_imp.h,v
retrieving revision 1.12
diff -u -r1.12 mercury_imp.h
--- mercury_imp.h	1998/11/05 03:53:40	1.12
+++ mercury_imp.h	1998/11/09 12:00:17
@@ -20,6 +20,12 @@
 #define MERCURY_IMP_H
 
 /*
+** mercury_bootstrap.h should come first, since may defines macros
+** used in other header files.
+*/
+#include	"mercury_bootstrap.h"
+
+/*
 ** The #include of "mercury_conf.h" must come before the `#ifdef USE_DLLS',
 ** because mercury_conf.h defines the USE_DLLS macro.
 */
@@ -73,8 +79,6 @@
 #include	"mercury_misc.h"
 
 #include	"mercury_tabling.h"
-
-#include	"mercury_bootstrap.h"
 
 #include	"mercury_grade.h"
 
Index: runtime/mercury_memory.h
===================================================================
RCS file: /home/mercury1/repository/mercury/runtime/mercury_memory.h,v
retrieving revision 1.8
diff -u -r1.8 mercury_memory.h
--- mercury_memory.h	1998/09/21 09:08:18	1.8
+++ mercury_memory.h	1998/11/09 10:54:22
@@ -26,15 +26,6 @@
 #include "mercury_std.h"		/* for bool */
 
 
-/* these cannot be changed without lots of modifications elsewhere */
-#define MAX_REAL_REG 32		/* r1 .. r32 */
-#define NUM_SPECIAL_REG 5	/* succip, sp, hp, maxfr, curfr */
-
-/* this can be changed at will, including by -D options to the C compiler */
-#ifndef MAX_VIRTUAL_REG
-#define MAX_VIRTUAL_REG	1024
-#endif
-
 #ifdef	MR_LOWLEVEL_DEBUG
 extern	MemoryZone	*dumpstack_zone;
 extern	int		dumpindex;
Index: runtime/mercury_memory_zones.h
===================================================================
RCS file: /home/mercury1/repository/mercury/runtime/mercury_memory_zones.h,v
retrieving revision 1.3
diff -u -r1.3 mercury_memory_zones.h
--- mercury_memory_zones.h	1998/06/09 02:08:09	1.3
+++ mercury_memory_zones.h	1998/11/09 11:31:46
@@ -28,7 +28,6 @@
 
 /* these cannot be changed without lots of modifications elsewhere */
 #define MAX_REAL_REG 32		/* r1 .. r32 */
-#define NUM_SPECIAL_REG 5	/* succip, sp, hp, maxfr, curfr */
 
 /* this can be changed at will, including by -D options to the C compiler */
 #ifndef MAX_VIRTUAL_REG
@@ -37,8 +36,8 @@
 
 /* allocate enough fake_regs to hold both the special regs */
 /* and all the virtual registers */
-#define MAX_FAKE_REG	(NUM_SPECIAL_REG + MAX_VIRTUAL_REG)
-				/* mr0 .. mr36, mr(37) ... mr(1028) */
+#define MAX_FAKE_REG	(MR_NUM_SPECIAL_REG + MAX_VIRTUAL_REG)
+				/* mr0 .. mr37, mr(38) ... mr(1000) ... */
 
 /* used to lookup the fake_reg for a given real reg */
 extern	Word	virtual_reg_map[MAX_REAL_REG];
Index: runtime/mercury_regorder.h
===================================================================
RCS file: /home/mercury1/repository/mercury/runtime/mercury_regorder.h,v
retrieving revision 1.9
diff -u -r1.9 mercury_regorder.h
--- mercury_regorder.h	1998/07/22 07:53:01	1.9
+++ mercury_regorder.h	1998/11/09 12:10:40
@@ -23,17 +23,20 @@
 #define MERCURY_REGORDER_H
 
 /*
+** If we are using an engine base register, then shift all
+** the machine registers across by 1, and allocate mr0 to
+** MR_engine_base
+*/
+#if defined(MR_THREAD_SAFE) && NUM_REAL_REGS > 0
+
+
+/*
+** r1 .. r32: the general-purpose Mercury registers.
+**
 ** If you modify the r<N> to mr<N> mapping, make sure that you update
 ** the definition of MR_VIRTUAL_REG_MAP_BODY below and BOTH copies of
 ** the definitions of r1-r32.
 */
-#if defined(MR_THREAD_SAFE) && NUM_REAL_REGS > 0
-
-	/*
-	** If we are using an engine base register, then shift all
-	** the machine registers across by 1, and allocate mr0 to
-	** MR_engine_base
-	*/
 #define r1		count_usage(R_RN(1), mr3)
 #define r2		count_usage(R_RN(2), mr4)
 #define r3		count_usage(R_RN(3), mr5)
@@ -70,22 +73,32 @@
 	/* Keep this in sync with the actual defintions below */
 #define MR_real_reg_number_sp MR_real_reg_number_mr1
 
-#define MR_engine_base	LVALUE_CAST(Word *, count_usage(MR_SP_RN, mr0))
-
 /*
+** The special-purpose Mercury registers:
+**	hp, sp, succip, etc.
+**
 ** If you modify the following block, make sure that you update
 ** the definitions of MR_NUM_SPECIAL_REG, MR_MAX_SPECIAL_REG_MR,
 ** and MR_saved_*.
 */
+
+/*
+** first, the "very special" registers -- these may go in real machine regs
+*/
+#define MR_engine_base	LVALUE_CAST(Word *, count_usage(MR_SP_RN, mr0))
 #define MR_succip	LVALUE_CAST(Code *, count_usage(MR_SI_RN, mr2))
 #define MR_hp		LVALUE_CAST(Word *, count_usage(MR_HP_RN, mr6))
 #define MR_sp		LVALUE_CAST(Word *, count_usage(MR_SP_RN, mr1))
 #define MR_curfr	LVALUE_CAST(Word *, count_usage(MR_CF_RN, mr9))
 #define MR_maxfr	LVALUE_CAST(Word *, count_usage(MR_MF_RN, mr10))
+/*
+** next, the remainder of the special registers -- these go in the
+** fake_reg array, or in some cases in ordinary global variables.
+*/
 #define MR_sol_hp	LVALUE_CAST(Word *, count_usage(MR_SOL_HP_RN, mr(38)))
 #define MR_min_hp_rec	LVALUE_CAST(Word *, count_usage(MR_MIN_HP_REC, mr(39)))
 #define MR_min_sol_hp_rec	LVALUE_CAST(Word *,	\
-			count_usage(MR_MIN_HP_REC, mr40))
+			count_usage(MR_MIN_HP_REC, mr(40)))
 #define MR_global_hp	LVALUE_CAST(Word *,	\
 			count_usage(MR_GLOBAL_HP_RN, mr(41)))
 
@@ -93,10 +106,17 @@
 #define MR_ticket_counter	 \
 		count_usage(MR_TICKET_COUNTER_RN, MR_ticket_counter_var)
 
-/* the number of special, non rN registers */
+/*
+** the number of "very special" registers, i.e. special registers that can
+** be allocated in real machine registers:
+** MR_engine_base, MR_succip, MR_hp, MR_sp, MR_curfr, MR_maxfr
+*/
+#define MR_NUM_VERY_SPECIAL_REG	6
+
+/* the number of special-purpose Mercury registers */
 #define MR_NUM_SPECIAL_REG	12
 
-/* the maximum mrN number of special, non rN registers */
+/* the maximum mrN number of special registers */
 #define	MR_MAX_SPECIAL_REG_MR	41
 
 /*
@@ -152,6 +172,11 @@
 
 #else /* !MR_THREAD_SAFE or NUM_REAL_REGS == 0 */
 
+/*
+** If you modify the r<N> to mr<N> mapping, make sure that you update
+** the definition of MR_VIRTUAL_REG_MAP_BODY below and BOTH copies of
+** the definitions of r1-r32.
+*/
 #define r1		count_usage(R_RN(1), mr2)
 #define r2		count_usage(R_RN(2), mr3)
 #define r3		count_usage(R_RN(3), mr4)
@@ -185,29 +210,48 @@
 #define r31		count_usage(R_RN(31), mr35)
 #define r32		count_usage(R_RN(32), mr36)
 
+	/* Keep this in sync with the actual defintions below */
+#define MR_real_reg_number_sp MR_real_reg_number_mr0
+
 /*
+** The special-purpose Mercury registers:
+**	hp, sp, succip, etc.
+**
 ** If you modify the following block, make sure that you update
 ** the definitions of MR_NUM_SPECIAL_REG, MR_MAX_SPECIAL_REG_MR,
 ** and MR_saved_*.
 */
-#define MR_real_reg_number_sp MR_real_reg_number_mr0
 
+/*
+** first, the "very special" registers -- these may go in real machine regs
+*/
 #define MR_succip	LVALUE_CAST(Code *, count_usage(MR_SI_RN, mr1))
 #define MR_hp		LVALUE_CAST(Word *, count_usage(MR_HP_RN, mr5))
 #define MR_sp		LVALUE_CAST(Word *, count_usage(MR_SP_RN, mr0))
 #define MR_curfr	LVALUE_CAST(Word *, count_usage(MR_CF_RN, mr8))
 #define MR_maxfr	LVALUE_CAST(Word *, count_usage(MR_MF_RN, mr9))
+/*
+** next, the remainder of the special registers -- these go in the
+** fake_reg array, or in some cases in ordinary global variables.
+*/
 #define MR_sol_hp	LVALUE_CAST(Word *, count_usage(MR_SOL_HP_RN, mr(37)))
 #define MR_min_hp_rec	LVALUE_CAST(Word *, count_usage(MR_MIN_HP_REC, mr(38)))
 #define MR_min_sol_hp_rec	LVALUE_CAST(Word *,	\
-			count_usage(MR_MIN_HP_REC, mr39))
+			count_usage(MR_MIN_HP_REC, mr(39)))
 #define MR_global_hp	LVALUE_CAST(Word *,	\
 			count_usage(MR_GLOBAL_HP_RN, mr(40)))
 #define MR_trail_ptr	count_usage(MR_TRAIL_PTR_RN, MR_trail_ptr_var)
 #define MR_ticket_counter	 \
 		count_usage(MR_TICKET_COUNTER_RN, MR_ticket_counter_var)
 
-/* the number of special, non rN registers */
+/*
+** the number of "very special" registers, i.e. special registers that can
+** be allocated in real machine registers:
+** MR_succip, MR_hp, MR_sp, MR_curfr, MR_maxfr
+*/
+#define MR_NUM_VERY_SPECIAL_REG	5
+
+/* the number of special registers */
 #define MR_NUM_SPECIAL_REG	11
 
 /* the maximum mrN number of special, non rN registers */
@@ -265,12 +309,5 @@
 }
 
 #endif
-
-/* for backwards compatibility */
-#define succip		MR_succip
-#define hp		MR_hp
-#define sp		MR_sp
-#define curfr		MR_curfr
-#define maxfr		MR_maxfr
 
 #endif /* not MERCURY_REGORDER_H */
Index: runtime/mercury_regs.h
===================================================================
RCS file: /home/mercury1/repository/mercury/runtime/mercury_regs.h,v
retrieving revision 1.10
diff -u -r1.10 mercury_regs.h
--- mercury_regs.h	1998/07/03 05:51:24	1.10
+++ mercury_regs.h	1998/11/09 11:55:57
@@ -69,7 +69,7 @@
 **	MR_succip, MR_hp, MR_sp, MR_curfr, MR_maxfr and
 **	r1, ..., r32, r(33), ..., r(MAX_VIRTUAL_REG)
 **
-** to the set mr0..mr36, mr(37), mr(38), ..., mr(MAX_FAKE_REG-1)
+** to the set mr0..mr37, mr(38), mr(39), ..., mr(MAX_FAKE_REG-1)
 ** which were provided by the hardware abstraction layer.
 ** It also provides MR_virtual_r(), MR_virtual_succip, MR_virtual_hp, etc.,
 ** which are similar to mr<N>, MR_succip, MR_hp, etc. except that they
@@ -114,9 +114,9 @@
 ** Extra stuff for the hardware abstraction layer
 */
 
-/* The machdeps header defines mr0 .. mr36; now define mr(n) for n > 36 */
+/* The machdeps header defines mr0 .. mr37; now define mr(n) for n > 37 */
 
-#define mr(n) LVALUE_SEQ(MR_assert((n) >= MAX_REAL_REG + NUM_SPECIAL_REG && \
+#define mr(n) LVALUE_SEQ(MR_assert((n) > 37 && \
 				(n) < MAX_FAKE_REG),\
 		MR_fake_reg[n])
 
@@ -182,7 +182,7 @@
 
 /* mercury_regorder.h defines r1 .. r32; now define r(n) for n > 32 */
 
-#define r(n) mr((n) + NUM_SPECIAL_REG - 1)
+#define r(n) mr((n) + MR_NUM_SPECIAL_REG - 1)
 
 /*
 ** saved_reg(save_area, n) accesses the underlying slot in save_area
@@ -190,7 +190,7 @@
 */
 #define saved_reg(save_area, n)						\
 	LVALUE_COND((n) > MAX_REAL_REG,					\
-		save_area[(n) + NUM_SPECIAL_REG - 1],			\
+		save_area[(n) + MR_NUM_SPECIAL_REG - 1],		\
 		save_area[virtual_reg_map[(n) - 1]])
 
 /* virtual_reg(n) accesses the underlying fake_reg for register n */
Index: runtime/mercury_stacks.h
===================================================================
RCS file: /home/mercury1/repository/mercury/runtime/mercury_stacks.h,v
retrieving revision 1.11
diff -u -r1.11 mercury_stacks.h
--- mercury_stacks.h	1998/10/27 16:32:16	1.11
+++ mercury_stacks.h	1998/11/09 11:17:35
@@ -123,7 +123,6 @@
 #define	curprednm		bt_prednm(MR_curfr)
 
 #define	MR_framevar(n)		MR_based_framevar(MR_curfr, n)
-#define	framevar(n)		MR_framevar((n) + 1)
 
 /* DEFINITIONS FOR MANIPULATING THE NONDET STACK */
 
Index: runtime/mercury_type_info.h
===================================================================
RCS file: /home/mercury1/repository/mercury/runtime/mercury_type_info.h,v
retrieving revision 1.14
diff -u -r1.14 mercury_type_info.h
--- mercury_type_info.h	1998/11/03 10:58:32	1.14
+++ mercury_type_info.h	1998/11/09 11:12:54
@@ -234,25 +234,6 @@
 **
 */
 
-
-/* 
-** Defintions for backwards compatibility.
-** These will go away eventually.
-*/
-
-#define TYPELAYOUT_UNASSIGNED_VALUE	(MR_TYPELAYOUT_UNASSIGNED_VALUE)
-#define TYPELAYOUT_UNUSED_VALUE		(MR_TYPELAYOUT_UNUSED_VALUE)
-#define TYPELAYOUT_STRING_VALUE		(MR_TYPELAYOUT_STRING_VALUE)
-#define TYPELAYOUT_FLOAT_VALUE		(MR_TYPELAYOUT_FLOAT_VALUE)
-#define TYPELAYOUT_INT_VALUE		(MR_TYPELAYOUT_INT_VALUE)
-#define TYPELAYOUT_CHARACTER_VALUE	(MR_TYPELAYOUT_CHARACTER_VALUE)
-#define TYPELAYOUT_UNIV_VALUE		(MR_TYPELAYOUT_UNIV_VALUE)
-#define TYPELAYOUT_PREDICATE_VALUE	(MR_TYPELAYOUT_PREDICATE_VALUE)
-#define TYPELAYOUT_VOID_VALUE		(MR_TYPELAYOUT_VOID_VALUE)
-#define TYPELAYOUT_ARRAY_VALUE		(MR_TYPELAYOUT_ARRAY_VALUE)
-#define TYPELAYOUT_TYPEINFO_VALUE	(MR_TYPELAYOUT_TYPEINFO_VALUE)
-#define TYPELAYOUT_C_POINTER_VALUE	(MR_TYPELAYOUT_C_POINTER_VALUE)
-
 enum MR_TypeLayoutValue {
 	MR_TYPELAYOUT_UNASSIGNED_VALUE,
 	MR_TYPELAYOUT_UNUSED_VALUE,
Index: runtime/process_getopt
===================================================================
RCS file: /home/mercury1/repository/mercury/runtime/process_getopt,v
retrieving revision 1.2
diff -u -r1.2 process_getopt
--- process_getopt	1998/08/11 06:23:16	1.2
+++ process_getopt	1998/11/09 12:56:12
@@ -15,6 +15,9 @@
 	g/\<optopt/s//MR_optopt/g
 	g/\<option/s//MR_option/g
 	g/\<_getopt/s//MR__getopt/g
+	g/\<_GETOPT/s//MERCURY_GETOPT/g
+	g/no_argument/s//MR_no_argument/g
+	g/required_argument/s//MR_required_argument/g
 	g/#ifndef/s/ELIDE_CODE/XXXELIDE_CODEXXX/
 	w
 	q

-- 
Fergus Henderson <fjh at cs.mu.oz.au>  |  "Binaries may die
WWW: <http://www.cs.mu.oz.au/~fjh>  |   but source code lives forever"
PGP: finger fjh at 128.250.37.3        |     -- leaked Microsoft memo.



More information about the developers mailing list