This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

egcs-1.1b alpha-dec-osf3.2 internal error in change_address()


Compiling the attached program bug.c with egcs-1.1 on an alpha-dec-osf3.2
system results in the message "emit-rtl.c:1491: Internal compiler error
in function change_address".

This program was extracted from automatically-generated C code generated
by the Mercury compiler.  It makes use of gcc's global register variables
extension but should otherwise be pretty much standard ANSI C.

Here's a transcript.

$ gcc -c bug.c
../../egcs-1.1b/gcc/emit-rtl.c:1491: Internal compiler error in function change_address
$ gcc -v
Reading specs from /usr/local/apps/egcs-1.1b/lib/gcc-lib/alpha-dec-osf3.2/egcs-2.91.57/specs
gcc version egcs-2.91.57 19980901 (egcs-1.1 release)
$ uname -a
OSF1 murlibobo.cs.mu.OZ.AU V3.2 69.73 alpha

-- 
Fergus Henderson <fjh@cs.mu.oz.au>  |  "I have always known that the pursuit
WWW: <http://www.cs.mu.oz.au/~fjh>  |  of excellence is a lethal habit"
PGP: finger fjh@128.250.37.3        |     -- the last words of T. S. Garp.
typedef	unsigned long 	Word;
typedef long 		Integer;
typedef unsigned long 	Unsigned;
typedef long 		Bool;
typedef void			Code;
	typedef	double			Float64;
typedef char Char;
typedef unsigned char UnsignedChar;
typedef Char *String;
typedef const Char *ConstString;
typedef void (*Cont) (void);
register 	Word	mr0 __asm__("$9");	 
register	Word	mr1 __asm__("$10");	 
register	Word	mr2 __asm__("$11");	 
register	Word	mr3 __asm__("$12");	 
register	Word	mr4 __asm__("$13");	 
register	Word	mr5 __asm__("$14");	 
register	Word	mr6 __asm__("$15");	 
extern	Word	get_reg(int);
extern	Word	set_reg(int, Word);
typedef long unsigned int size_t;
typedef struct {
	int	_cnt;
	unsigned char	*_ptr;
	unsigned char	*_base;
	int	_bufsiz;
	short	_flag;
	short	_file;
	char	*__newbase;
	void	*_lock;			 
	unsigned char	*_bufendp;
} FILE;
typedef struct mercury_file {
	FILE *file;
	int line_number;
} MercuryFile;
typedef struct {
	Integer size;
	Word elements[1];  
} MR_ArrayType;
extern	Word	virtual_reg_map[32 ];
extern	unsigned long 	num_uses[(32   + 11) ];
typedef struct MEMORY_ZONE	MemoryZone;
typedef char  ZoneHandler(Word *addr, struct MEMORY_ZONE *zone, void *context);
struct MEMORY_ZONE {
	struct MEMORY_ZONE *next;  
	const char *name;	 
	int	id;		 
	Word	*bottom;	 
	Word	*top;		 
	Word	*min;		 
	Word	*max;		 
	Word	*hardmax;	 
	Word	*redzone_base;	 
	Word	*redzone;	 
	ZoneHandler *handler;    
};
void init_memory_arena(void);
void init_zones(void);
MemoryZone	*create_zone(const char *name, int id,
			size_t size, size_t offset, size_t redsize,
			ZoneHandler *handler);
MemoryZone	*construct_zone(const char *name, int Id, Word *base,
			size_t size, size_t offset, size_t redsize,
			ZoneHandler *handler);
void	reset_redzone(MemoryZone *zone);
MemoryZone	*get_used_memory_zones(void);
void	debug_memory(void);
extern	size_t	next_offset(void);
extern	void	init_memory(void);
extern	void	init_heap(void);
extern	void	debug_memory(void);
extern	void	*allocate_bytes(size_t numbytes);
void deallocate_memory(void *);
void	*checked_malloc(size_t n);
void	*checked_realloc(void *old, size_t n);
char	*MR_copy_string(const char *s);
extern	size_t          unit;
extern	size_t          page_size;
typedef enum {
	MR_undo,       
	MR_commit,     
	MR_solve,      
	MR_exception,  
	MR_gc
} MR_untrail_reason;
typedef enum {
	MR_val_entry,
	MR_func_entry
} MR_trail_entry_kind;
typedef void MR_untrail_func_type(void *datum, MR_untrail_reason);
typedef struct {
	union {
		struct {
			Word *MR_address;
			Word MR_value;
		} MR_val;
		struct {
			MR_untrail_func_type *MR_untrail_func;
			void *MR_datum;
		} MR_func;
	} MR_union;
} MR_TrailEntry;
extern MemoryZone *MR_trail_zone;
extern MR_TrailEntry *MR_trail_ptr_var;
extern Unsigned MR_ticket_counter_var;
void MR_untrail_to(MR_TrailEntry *old_trail_ptr, MR_untrail_reason reason);
typedef Unsigned MR_ChoicepointId;
typedef enum { MR_use_now, MR_use_later } MR_when_to_use;
void	init_thread(MR_when_to_use);
typedef	struct	s_list {
	union {
		void 	*l_data;
		int	l_length;
	} l_union;
	struct	s_list	*l_prev;
	struct	s_list	*l_next;
} List;
extern	List	*makelist0(void);
extern	List	*list_makelist(void *);
extern	List	*list_addhead(List *, void *);
extern	List	*list_addtail(List *, void *);
extern	List	*addlist(List *, List *);
extern	List	*addndlist(List *, List *);
extern	void	list_insert_before(List *, List *, void *);
extern	void	list_insert_after(List *, List *, void *);
extern	int	length(const List *);
extern	void	dlist_delete(List *, List *, void (*)(void *));
extern	void	oldlist(List *, void (*)(void *));
typedef	enum { MR_PREDICATE, MR_FUNCTION } MR_PredFunc;
typedef	Word MR_Determinism;
typedef Word MR_Live_Lval;
typedef enum {
	MR_LVAL_TYPE_R,
	MR_LVAL_TYPE_F,
	MR_LVAL_TYPE_STACKVAR,
	MR_LVAL_TYPE_FRAMEVAR,
	MR_LVAL_TYPE_SUCCIP,
	MR_LVAL_TYPE_MAXFR,
	MR_LVAL_TYPE_CURFR,
	MR_LVAL_TYPE_HP,
	MR_LVAL_TYPE_SP,
	MR_LVAL_TYPE_INDIRECT,
	MR_LVAL_TYPE_UNKNOWN 
} MR_Lval_Type;
typedef Word MR_Live_Type;
typedef enum {
	MR_LIVE_TYPE_SUCCIP,
	MR_LIVE_TYPE_HP,
	MR_LIVE_TYPE_CURFR,
	MR_LIVE_TYPE_MAXFR,
	MR_LIVE_TYPE_REDOIP,
	MR_LIVE_TYPE_UNWANTED
} MR_Lval_NonVar;
typedef struct {
	Word	*pseudo_type_info;
	Word	inst;	 
} MR_Var_Shape_Info;
typedef	struct MR_Stack_Layout_Var_Struct {
	MR_Live_Lval		MR_slv_locn;
	MR_Live_Type		MR_slv_live_type;
} MR_Stack_Layout_Var;
typedef	struct MR_Stack_Layout_Vars_Struct {
	MR_Stack_Layout_Var	*MR_slvs_pairs;
	String			*MR_slvs_names;
	MR_Live_Lval		*MR_slvs_tvars;
} MR_Stack_Layout_Vars;
typedef struct MR_Stack_Layout_User_Proc_Struct {
	MR_PredFunc		MR_user_pred_or_func;
	ConstString		MR_user_decl_module;
	ConstString		MR_user_def_module;
	ConstString		MR_user_name;
	Integer			MR_user_arity;
	Integer			MR_user_mode;
} MR_Stack_Layout_User_Proc;
typedef struct MR_Stack_Layout_Compiler_Proc_Struct {
	ConstString		MR_comp_type_name;
	ConstString		MR_comp_type_module;
	ConstString		MR_comp_def_module;
	ConstString		MR_comp_pred_name;
	Integer			MR_comp_arity;
	Integer			MR_comp_mode;
} MR_Stack_Layout_Compiler_Proc;
typedef union MR_Stack_Layout_Proc_Id_Union {
	MR_Stack_Layout_User_Proc	MR_proc_user;
	MR_Stack_Layout_Compiler_Proc	MR_proc_comp;
} MR_Stack_Layout_Proc_Id;
typedef	struct MR_Stack_Layout_Entry_Struct {
	Code			*MR_sle_code_addr;
	MR_Determinism		MR_sle_detism;
	Integer			MR_sle_stack_slots;
	MR_Live_Lval		MR_sle_succip_locn;
	MR_Stack_Layout_Proc_Id	MR_sle_proc_id;
	struct MR_Stack_Layout_Label_Struct
				*MR_sle_call_label;
	Integer			MR_sle_maybe_from_full;
	Integer			MR_sle_maybe_decl_debug;
} MR_Stack_Layout_Entry;
typedef	struct MR_Stack_Layout_Label_Struct {
	MR_Stack_Layout_Entry	*MR_sll_entry;
	Integer			MR_sll_var_count;
	MR_Stack_Layout_Vars	MR_sll_var_info;
} MR_Stack_Layout_Label;
typedef struct s_entry {
	const Code			*e_addr;
	const MR_Stack_Layout_Entry	*e_layout;
	const char			*e_name;
} MR_Entry;
typedef struct s_internal {
	const Code			*i_addr;
	const MR_Stack_Layout_Label	*i_layout;
	const char			*i_name;
} MR_Internal;
extern	void		MR_do_init_label_tables(void);
extern	void		MR_insert_internal_label(const char *name, Code *addr,
				const MR_Stack_Layout_Label *label_layout);
extern	MR_Internal	*MR_lookup_internal_by_addr(const Code *addr);
extern	void		MR_process_all_internal_labels(void f(const void *));
  typedef Code * ModuleFunc(void);
typedef struct MR_context_struct MR_Context;
struct MR_context_struct {
	struct MR_context_struct *next;	
	Code		*resume;
	Code		*context_succip;
	MemoryZone	*detstack_zone;
	Word		*context_sp;
	MemoryZone	*nondetstack_zone;
	Word		*context_maxfr;
	Word		*context_curfr;
	Word		*context_hp;
	Word		*min_hp_rec;
};
typedef MR_Context Context;	 
extern		MR_Context	*MR_runqueue_head;
extern		MR_Context	*MR_runqueue_tail;
typedef enum {
	MR_PENDING_READ  = 0x01,
	MR_PENDING_WRITE = 0x02,
	MR_PENDING_EXEC  = 0x04
} MR_WaitingMode;
typedef struct MR_PENDING_CONTEXT {
	struct MR_PENDING_CONTEXT	*next;
	MR_Context			*context;
	int				fd;
	MR_WaitingMode			waiting_mode;
} MR_PendingContext;
extern	MR_PendingContext	*MR_pending_contexts;
void	init_context(MR_Context *context);
MR_Context *create_context(void);
void	destroy_context(MR_Context *context);
void	init_thread_stuff(void);
void	finalize_runqueue(void);
void	flounder(void);
void schedule(MR_Context *ctxt);
extern Code * do_runnext (void) ;
typedef struct sync_term_struct SyncTerm;
struct sync_term_struct {
	int		count;
	MR_Context	*parent;
};
  typedef struct MR_dword
  {
	unsigned long	low_word;
	unsigned long	high_word;
  } MR_dword;
typedef	struct MR_memprof_counter
{
	MR_dword	cells_at_period_start;
	MR_dword	words_at_period_start;
	MR_dword	cells_since_period_start;
	MR_dword	words_since_period_start;
} MR_memprof_counter;
typedef	struct MR_memprof_record
{
	const char			*name;  
	Code				*addr;  
	MR_memprof_counter		counter;
	struct MR_memprof_record	*left;	 
	struct MR_memprof_record	*right;	 
} MR_memprof_record;
typedef	struct MR_memprof_table
{
	MR_memprof_record		*root;
	int				num_entries;
} MR_memprof_table;
extern	MR_memprof_counter	MR_memprof_overall;
extern	MR_memprof_table	MR_memprof_procs;
extern	MR_memprof_table	MR_memprof_types;
extern void MR_record_allocation(int size, Code *proc_addr,
		const char *proc_name, const char *type);
extern void MR_prof_output_mem_tables(void);
    typedef void * GC_PTR;
typedef unsigned long GC_word;
typedef long GC_signed_word;
extern  GC_word GC_gc_no; 
extern  GC_PTR (*GC_oom_fn)  (size_t bytes_requested)  ;
extern  int GC_quiet;	 
extern  int GC_dont_gc;	 
extern  int GC_dont_expand;
extern  int GC_full_freq;     
extern  GC_word GC_non_gc_bytes;
extern  GC_word GC_free_space_divisor;
extern  GC_word GC_max_retries;
extern  GC_PTR GC_malloc  (size_t size_in_bytes)  ;
extern  GC_PTR GC_malloc_atomic  (size_t size_in_bytes)  ;
extern  GC_PTR GC_malloc_uncollectable  (size_t size_in_bytes)  ;
extern  GC_PTR GC_malloc_stubborn  (size_t size_in_bytes)  ;
extern  GC_PTR GC_malloc_atomic_uncollectable  (size_t size_in_bytes)  ;
extern  void GC_free  (GC_PTR object_addr)  ;
extern  void GC_change_stubborn  (GC_PTR)  ;
extern  void GC_end_stubborn_change  (GC_PTR)  ;
extern  GC_PTR GC_base  (GC_PTR displaced_pointer)  ;
extern  size_t GC_size  (GC_PTR object_addr)  ;
extern  GC_PTR GC_realloc  (GC_PTR old_object,
				   size_t new_size_in_bytes)  ;
extern  int GC_expand_hp  (size_t number_of_bytes)  ;
extern  void GC_set_max_heap_size  (GC_word n)  ;
extern  void GC_exclude_static_roots  (GC_PTR start, GC_PTR finish)  ;
extern  void GC_clear_roots  (void)  ;
extern  void GC_add_roots  (char * low_address,
				   char * high_address_plus_1)  ;
extern  void GC_register_displacement  (GC_word n)  ;
extern  void GC_debug_register_displacement  (GC_word n)  ;
extern  void GC_gcollect  (void)  ;
typedef int (* GC_stop_func)  (void)  ;
extern  int GC_try_to_collect  (GC_stop_func stop_func)  ;
extern  size_t GC_get_heap_size  (void)  ;
extern  size_t GC_get_bytes_since_gc  (void)  ;
extern  void GC_enable_incremental  (void)  ;
extern  int GC_collect_a_little  (void)  ;
extern  GC_PTR GC_malloc_ignore_off_page  (size_t lb)  ;
extern  GC_PTR GC_malloc_atomic_ignore_off_page  (size_t lb)  ;
extern  GC_PTR GC_debug_malloc
	 (size_t size_in_bytes, char * descr_string, int descr_int )  ;
extern  GC_PTR GC_debug_malloc_atomic
	 (size_t size_in_bytes, char * descr_string, int descr_int )  ;
extern  GC_PTR GC_debug_malloc_uncollectable
	 (size_t size_in_bytes, char * descr_string, int descr_int )  ;
extern  GC_PTR GC_debug_malloc_stubborn
	 (size_t size_in_bytes, char * descr_string, int descr_int )  ;
extern  void GC_debug_free  (GC_PTR object_addr)  ;
extern  GC_PTR GC_debug_realloc
	 (GC_PTR old_object, size_t new_size_in_bytes,
  		  char * descr_string, int descr_int )  ;
extern  void GC_debug_change_stubborn  (GC_PTR)  ;
extern  void GC_debug_end_stubborn_change  (GC_PTR)  ;
typedef void (*GC_finalization_proc)
  	 (GC_PTR obj, GC_PTR client_data)  ;
extern  void GC_register_finalizer
    	 (GC_PTR obj, GC_finalization_proc fn, GC_PTR cd,
		  GC_finalization_proc *ofn, GC_PTR *ocd)  ;
extern  void GC_debug_register_finalizer
    	 (GC_PTR obj, GC_finalization_proc fn, GC_PTR cd,
		  GC_finalization_proc *ofn, GC_PTR *ocd)  ;
extern  void GC_register_finalizer_ignore_self
	 (GC_PTR obj, GC_finalization_proc fn, GC_PTR cd,
		  GC_finalization_proc *ofn, GC_PTR *ocd)  ;
extern  void GC_debug_register_finalizer_ignore_self
	 (GC_PTR obj, GC_finalization_proc fn, GC_PTR cd,
		  GC_finalization_proc *ofn, GC_PTR *ocd)  ;
extern  int GC_register_disappearing_link  (GC_PTR *  )  ;
extern  int GC_general_register_disappearing_link
	 (GC_PTR *  , GC_PTR obj)  ;
extern  int GC_unregister_disappearing_link  (GC_PTR *  )  ;
extern  GC_PTR GC_make_closure  (GC_finalization_proc fn, GC_PTR data)  ;
extern  void GC_debug_invoke_finalizer  (GC_PTR obj, GC_PTR data)  ;
extern  int GC_invoke_finalizers  (void)  ;
typedef void (*GC_warn_proc)  (char *msg, GC_word arg)  ;
extern  GC_warn_proc GC_set_warn_proc  (GC_warn_proc p)  ;
typedef GC_PTR (*GC_fn_type)  (GC_PTR client_data)  ;
extern  GC_PTR GC_call_with_alloc_lock
        	 (GC_fn_type fn, GC_PTR client_data)  ;
extern  GC_PTR GC_same_obj  (GC_PTR p, GC_PTR q)  ;
extern  GC_PTR GC_pre_incr  (GC_PTR *p, size_t how_much)  ;
extern  GC_PTR GC_post_incr  (GC_PTR *p, size_t how_much)  ;
extern  GC_PTR GC_is_visible  (GC_PTR p)  ;
extern  GC_PTR GC_is_valid_displacement  (GC_PTR	p)  ;
extern  void (*GC_same_obj_print_proc)  (GC_PTR p, GC_PTR q)  ;
extern  void (*GC_is_valid_displacement_print_proc)
	 (GC_PTR p)  ;
extern  void (*GC_is_visible_print_proc)
	 (GC_PTR p)  ;
int	hash_string(Word);
typedef double Float;
union FloatWord {
	Float f;
	Word w;
};
Integer hash_float(Float);
extern	void	MR_dump_stack(Code *success_pointer, Word *det_stack_pointer,
			Word *current_frame, char  include_trace_data);
extern	const char	*MR_dump_stack_from_layout(FILE *fp,
				const MR_Stack_Layout_Entry *entry_layout,
				Word *det_stack_pointer, Word *current_frame,
				char  include_trace_data,
				void (*print_stack_record)(FILE *, 
					const MR_Stack_Layout_Entry *, 
					int, int, Word *, Word *));
extern	void	MR_dump_nondet_stack_from_layout(FILE *fp, Word *base_maxfr);
extern	const MR_Stack_Layout_Label *MR_find_nth_ancestor(
			const MR_Stack_Layout_Label *label_layout,
			int ancestor_level, Word **stack_trace_sp,
			Word **stack_trace_curfr, const char **problem);
typedef enum {
	STEP_ERROR_BEFORE,       
	STEP_ERROR_AFTER,        
	STEP_OK                  
} MR_Stack_Walk_Step_Result;
extern  MR_Stack_Walk_Step_Result
MR_stack_walk_step(const MR_Stack_Layout_Entry *entry_layout,
		const MR_Stack_Layout_Label **return_label_layout,
		Word **stack_trace_sp_ptr, Word **stack_trace_curfr_ptr,
		const char **problem_ptr);
Code	*MR_stack_trace_bottom;
Word	*MR_nondet_stack_trace_bottom;
extern const char * MR_detism_names[];
void	MR_print_proc_id(FILE *fp, const MR_Stack_Layout_Entry *entry,
			const char *extra, Word *base_sp, Word *base_curfr);
void	MR_dump_stack_record_print(FILE *fp, 
			const MR_Stack_Layout_Entry *entry_layout, int count, 
			int start_level, Word *base_sp, Word *base_curfr);
extern	void	MR_schedule_agc(Code *pc_at_signal, Word *sp_at_signal);
struct	MR_RootNode {
	Word *root;
	Word *type_info;
	struct MR_RootNode* next;
};
typedef	struct MR_RootNode	*MR_RootList;
extern	void	MR_agc_add_root(Word *root_addr, Word *type_info);
extern	Code *	volatile	MR_prof_current_proc;
extern void	MR_prof_output_addr_decl(const char *name, const Code *address);
extern	void	MR_prof_init(void);
extern	void	MR_prof_finish(void);
typedef	long	jmp_buf[(35+1+48) ];
typedef long sigjmp_buf[(35+1+48) ];
extern void	longjmp  (jmp_buf, int)  ;
extern int	setjmp  (jmp_buf)  ;
extern int	sigsetjmp  (sigjmp_buf, int)  ;
extern void 	siglongjmp  (const sigjmp_buf, int)  ;
extern int      _setjmp  (jmp_buf)  ;
extern void     _longjmp  (jmp_buf, int)  ;
extern	char 	MR_debugflag[];
typedef struct {
		jmp_buf *mercury_env;	 
		jmp_buf env;		 
		Word *saved_succip;
		Word *saved_sp;
		Word *saved_curfr;
		Word *saved_maxfr;
		Word regs[7 ];
	} MR_jmp_buf;
typedef struct MR_mercury_engine_struct {
	Word		fake_reg[(11  + 1024 ) ];
	MR_Context	*this_context;
	MR_Context	context;
	jmp_buf		*e_jmp_buf;
} MercuryEngine;
  extern MercuryEngine	MR_engine_base;
extern	MercuryEngine	*create_engine(void);
extern	void		destroy_engine(MercuryEngine *engine);
extern	void	init_engine(MercuryEngine *engine);
extern	void	finalize_engine(MercuryEngine *engine);
extern	void	call_engine(Code *entry_point);
extern	void	terminate_engine(void);
extern	void	dump_prev_locations(void);
extern Code * do_redo (void) ;
extern Code * do_fail (void) ;
extern Code * do_reset_hp_fail (void) ;
extern Code * do_reset_framevar0_fail (void) ;
extern Code * do_succeed (void) ;
extern Code * do_not_reached (void) ;
typedef	enum {
	MR_PORT_CALL,
	MR_PORT_EXIT,
	MR_PORT_REDO,
	MR_PORT_FAIL,
	MR_PORT_THEN,
	MR_PORT_ELSE,
	MR_PORT_DISJ,
	MR_PORT_SWITCH,
	MR_PORT_PRAGMA_FIRST,
	MR_PORT_PRAGMA_LATER,
	MR_PORT_EXCEPTION
} MR_Trace_Port;
extern	Code	*MR_trace(const MR_Stack_Layout_Label *, MR_Trace_Port,
			const char *, int);
extern	Code	*MR_trace_fake(const MR_Stack_Layout_Label *, MR_Trace_Port,
			Unsigned, Unsigned, const char *, int);
extern	void	MR_trace_init(void);
extern	void	MR_trace_start(char  enabled);
extern	void	MR_trace_end(void);
extern	void	MR_trace_final(void);
extern	Unsigned	MR_trace_call_seqno;
extern	Unsigned	MR_trace_call_depth;
typedef enum {
	MR_TRACE_INTERNAL,
	MR_TRACE_EXTERNAL
} MR_Trace_Type;
extern	MR_Trace_Type	MR_trace_handler;
extern	char 		MR_trace_enabled;
extern	Unsigned	MR_trace_event_number;
extern	Bool		MR_trace_from_full;
extern	void	MR_trace_report(FILE *fp);
extern	void	MR_trace_report_raw(int fd);
extern	void	mercury_runtime_init(int argc, char **argv);
extern	void	mercury_runtime_main(void);
extern	int	mercury_runtime_terminate(void);
extern	Code 		*program_entry_point;  
extern	void		(*MR_library_initializer)(void);
extern	void		(*MR_library_finalizer)(void);
extern	void		(*MR_io_stderr_stream)(Word *);
extern	void		(*MR_io_stdout_stream)(Word *);
extern	void		(*MR_io_stdin_stream)(Word *);
extern	void		(*MR_io_print_to_cur_stream)(Word, Word);
extern	void		(*MR_io_print_to_stream)(Word, Word, Word);
extern	void		(*address_of_mercury_init_io)(void);
extern	void		(*address_of_init_modules)(void);
extern	void		(*address_of_init_gc)(void);
extern	void		(*MR_address_of_trace_init_external)(void);
extern	void		(*MR_address_of_trace_final_external)(void);
extern	Code	*MR_library_trace_browser;
extern	Code    *(*MR_trace_func_ptr)(const MR_Stack_Layout_Label *,
			MR_Trace_Port, Unsigned, Unsigned, const char *, int);
extern	void		do_init_modules(void);
extern	const char	*progname;
extern	int		mercury_argc;
extern	char		**mercury_argv;
extern	int		mercury_exit_status;
extern	size_t		heap_size;
extern	size_t		detstack_size;
extern	size_t		nondstack_size;
extern	size_t		solutions_heap_size;
extern	size_t		trail_size;
extern	size_t		global_heap_size;
extern	size_t		debug_heap_size;
extern	size_t		heap_zone_size;
extern	size_t		detstack_zone_size;
extern	size_t		nondstack_zone_size;
extern	size_t		solutions_heap_zone_size;
extern	size_t		trail_zone_size;
extern	size_t		global_heap_zone_size;
extern	size_t		debug_heap_zone_size;
extern const char *MR_mdb_in_filename;
extern const char *MR_mdb_out_filename;
extern const char *MR_mdb_err_filename;
extern	size_t		pcache_size;
extern	char 		check_space;
extern	int		time_at_start;
extern	int		time_at_last_stat;
enum MR_TimeProfileMethod {
	MR_profile_real_time,			 
	MR_profile_user_time,			 
	MR_profile_user_plus_system_time	 
};
extern	enum MR_TimeProfileMethod
			MR_time_profile_method;
extern  char  MR_profiling;
	typedef const Word *TypeLayoutField;
enum MR_TypeLayoutValue {
	MR_TYPE_CTOR_LAYOUT_UNASSIGNED_VALUE,
	MR_TYPE_CTOR_LAYOUT_UNUSED_VALUE,
	MR_TYPE_CTOR_LAYOUT_STRING_VALUE,
	MR_TYPE_CTOR_LAYOUT_FLOAT_VALUE,
	MR_TYPE_CTOR_LAYOUT_INT_VALUE,
	MR_TYPE_CTOR_LAYOUT_CHARACTER_VALUE,
	MR_TYPE_CTOR_LAYOUT_UNIV_VALUE,
	MR_TYPE_CTOR_LAYOUT_PREDICATE_VALUE,
	MR_TYPE_CTOR_LAYOUT_VOID_VALUE,
	MR_TYPE_CTOR_LAYOUT_ARRAY_VALUE,
	MR_TYPE_CTOR_LAYOUT_TYPEINFO_VALUE,
	MR_TYPE_CTOR_LAYOUT_C_POINTER_VALUE,
	MR_TYPE_CTOR_LAYOUT_TYPECLASSINFO_VALUE
};
typedef struct {
	int enum_or_comp_const;
	Word num_sharers;		
	ConstString functor1;
} MR_TypeLayout_EnumVector;
typedef struct {
	Word num_sharers;		
	Word simple_vector1;
} MR_TypeLayout_ComplicatedVector;
typedef struct {
	int is_no_tag;
	Word arg;
	ConstString name;
} MR_TypeLayout_NoTagVector;
typedef struct {
	int is_no_tag;		 
	Word equiv_type;
} MR_TypeLayout_EquivVector;
Word * MR_create_type_info(Word *, Word *);
int MR_compare_type_info(Word, Word);
Word MR_collapse_equivalences(Word);
struct MR_MemoryCellNode {
	void *data;
	struct MR_MemoryCellNode *next;
};
typedef struct MR_MemoryCellNode *MR_MemoryList;
Word * MR_make_type_info(const Word *term_type_info, 
	const Word *arg_pseudo_type_info, MR_MemoryList *allocated);
void MR_deallocate(MR_MemoryList allocated_memory_cells);
enum MR_DataRepresentation {
	MR_DATAREP_ENUM,
	MR_DATAREP_COMPLICATED_CONST,
	MR_DATAREP_COMPLICATED,
	MR_DATAREP_SIMPLE,
	MR_DATAREP_NOTAG,
	MR_DATAREP_EQUIV,
	MR_DATAREP_EQUIV_VAR,
	MR_DATAREP_INT,
	MR_DATAREP_CHAR,
	MR_DATAREP_FLOAT,
	MR_DATAREP_STRING,
	MR_DATAREP_PRED,
	MR_DATAREP_UNIV,
	MR_DATAREP_VOID,
	MR_DATAREP_ARRAY,
	MR_DATAREP_TYPEINFO,
	MR_DATAREP_C_POINTER,
	MR_DATAREP_UNKNOWN,
	MR_DATAREP_TYPECLASSINFO
};
enum MR_DataRepresentation MR_categorize_data(Word functors_indicator,
		Word layout_entry);
extern	void	printdetstack(const Word *s);
extern	void	MR_printdetstackptr(const Word *s);
extern	void	MR_print_detstackptr(FILE *fp, const Word *s);
extern	void	printnondstack(const Word *s);
extern	void	MR_printnondstackptr(const Word *s);
extern	void	MR_print_nondstackptr(FILE *fp, const Word *s);
extern	void	printlabel(  Code *w);
extern	void	MR_warning(const char *msg, ...);
extern	void	fatal_error(const char *msg, ...) __attribute__((noreturn)) ;
extern	void	MR_memcpy(void *dest, const void *src, size_t nbytes);
typedef Word	**TrieNode;
typedef Word	**AnswerBlock;
TrieNode MR_int_hash_lookup_or_add(TrieNode Table, Integer Key);
TrieNode MR_float_hash_lookup_or_add(TrieNode Table, Float Key);
TrieNode MR_string_hash_lookup_or_add(TrieNode Table, String Key);
TrieNode MR_type_info_lookup_or_add(TrieNode, Word *);
TrieNode MR_int_index_lookup_or_add(TrieNode table, Integer range, Integer key);
TrieNode MR_table_type(TrieNode Table, Word *type_info, Word data_value);
extern const char   MR_grade_v1_register_gc_tags3_ubf               ;
static Code * mercury__query__IntroducedFrom__pred__run__15__2_3_0 (void) ;
static Code * mercury__query__IntroducedFrom__pred__run__15__2_3_0_i2 (void) ;
static Code * mercury__query__IntroducedFrom__pred__run__15__2_3_0_i3 (void) ;
static Code * mercury__query__IntroducedFrom__pred__run__15__2_3_0_i4 (void) ;
static Code * mercury__query__IntroducedFrom__pred__run__15__2_3_0_i5 (void) ;
static Code * mercury__query__IntroducedFrom__pred__run__15__2_3_0_i6 (void) ;
static Code * mercury__query__IntroducedFrom__pred__run__15__2_3_0_i7 (void) ;
static Code * mercury__query__IntroducedFrom__pred__run__14__1_1_0 (void) ;
static Code * mercury__query__IntroducedFrom__pred__run__14__1_1_0_i1 (void) ;
Code * mercury__query__run_2_0 (void) ;
static Code * mercury__query__run_2_0_i2 (void) ;
static Code * mercury__query__run_2_0_i3 (void) ;
static Code * mercury____Unify___query__res_2_0 (void) ;
static Code * mercury____Unify___query__res_2_0_i2 (void) ;
static Code * mercury____Unify___query__res_2_0_i4 (void) ;
static Code * mercury____Unify___query__res_2_0_i1 (void) ;
static Code * mercury____Index___query__res_2_0 (void) ;
static Code * mercury____Compare___query__res_2_0 (void) ;
static Code * mercury____Compare___query__res_2_0_i3 (void) ;
static Code * mercury____Compare___query__res_2_0_i7 (void) ;
static Code * mercury__query__query_2_0 (void) ;
const struct mercury_data_query__type_ctor_info_res_2_struct {
	Integer f1;
	Code * f2;
	Code * f3;
	Code * f4;
	Word * f5;
	Word * f6;
	Word * f7;
	Word * f8;
}  mercury_data_query__type_ctor_info_res_2;
static const struct mercury_data_query__common_0_struct {
	Word * f1;
	Word * f2;
}  mercury_data_query__common_0;
static const struct mercury_data_query__common_1_struct {
	Word * f1;
	Word * f2;
	Word * f3;
}  mercury_data_query__common_1;
static const struct mercury_data_query__common_2_struct {
	Integer f1;
	Code * f2;
}  mercury_data_query__common_2;
static const struct mercury_data_query__common_3_struct {
	Integer f1;
	Code * f2;
}  mercury_data_query__common_3;
static const struct mercury_data_query__common_4_struct {
	Integer f1;
	Word * f2;
}  mercury_data_query__common_4;
static const struct mercury_data_query__common_5_struct {
	Integer f1;
	Word * f2;
}  mercury_data_query__common_5;
static const struct mercury_data_query__common_6_struct {
	Integer f1;
	Word * f2;
}  mercury_data_query__common_6;
static const struct mercury_data_query__common_7_struct {
	Integer f1;
	Integer f2;
	Integer f3;
	Word * f4;
	Word * f5;
}  mercury_data_query__common_7;
static const struct mercury_data_query__type_ctor_functors_res_2_struct {
	Integer f1;
	Integer f2;
	Word * f3;
}  mercury_data_query__type_ctor_functors_res_2;
static const struct mercury_data_query__type_ctor_layout_res_2_struct {
	Word * f1;
	Word * f2;
	Word * f3;
	Word * f4;
	Word * f5;
	Word * f6;
	Word * f7;
	Word * f8;
}  mercury_data_query__type_ctor_layout_res_2;
const struct mercury_data_query__type_ctor_info_res_2_struct mercury_data_query__type_ctor_info_res_2 = {
	(Integer) 2,
	((Code *) ( mercury____Unify___query__res_2_0 )) ,
	((Code *) ( mercury____Index___query__res_2_0 )) ,
	((Code *) ( mercury____Compare___query__res_2_0 )) ,
	(Word *) &mercury_data_query__type_ctor_layout_res_2,
	(Word *) &mercury_data_query__type_ctor_functors_res_2,
	((Word *)  "query" ) ,
	((Word *)  "res" ) 
};
extern const struct mercury_data_list__type_ctor_info_list_1_struct
	mercury_data_list__type_ctor_info_list_1;
extern const struct mercury_data___type_ctor_info_character_0_struct
	mercury_data___type_ctor_info_character_0;
static const struct mercury_data_query__common_0_struct mercury_data_query__common_0 = {
	(Word *) &mercury_data_list__type_ctor_info_list_1,
	(Word *) &mercury_data___type_ctor_info_character_0
};
static const struct mercury_data_query__common_1_struct mercury_data_query__common_1 = {
	(Word *) &mercury_data_query__type_ctor_info_res_2,
	((Word *)((char *)(  (Word *) &mercury_data_query__common_0 ) + ( ( 0 )  ))) ,
	((Word *)((char *)(  (Word *) &mercury_data_query__common_0 ) + ( ( 0 )  ))) 
};
static const struct mercury_data_query__common_2_struct mercury_data_query__common_2 = {
	(Integer) 0,
	((Code *) ( mercury__query__IntroducedFrom__pred__run__14__1_1_0 )) 
};
static const struct mercury_data_query__common_3_struct mercury_data_query__common_3 = {
	(Integer) 0,
	((Code *) ( mercury__query__IntroducedFrom__pred__run__15__2_3_0 )) 
};
static const struct mercury_data_query__common_4_struct mercury_data_query__common_4 = {
	(Integer) 99,
	((Word *)((char *)(  (Word *) (( (Integer) 0 ) << 3 )  ) + ( ( 0 )  ))) 
};
static const struct mercury_data_query__common_5_struct mercury_data_query__common_5 = {
	(Integer) 98,
	((Word *)((char *)(  (Word *) &mercury_data_query__common_4 ) + ( ( 1 )  ))) 
};
static const struct mercury_data_query__common_6_struct mercury_data_query__common_6 = {
	(Integer) 97,
	((Word *)((char *)(  (Word *) &mercury_data_query__common_5 ) + ( ( 1 )  ))) 
};
static const struct mercury_data_query__common_7_struct mercury_data_query__common_7 = {
	(Integer) 2,
	(Integer) 1,
	(Integer) 2,
	((Word *)  "res" ) ,
	((Word *)((char *)(  (Word *) (( (Integer) 0 ) << 3 )  ) + ( ( 0 )  ))) 
};
static const struct mercury_data_query__type_ctor_functors_res_2_struct mercury_data_query__type_ctor_functors_res_2 = {
	(Integer) 0,
	(Integer) 1,
	((Word *)((char *)(  (Word *) &mercury_data_query__common_7 ) + ( ( 0 )  ))) 
};
static const struct mercury_data_query__type_ctor_layout_res_2_struct mercury_data_query__type_ctor_layout_res_2 = {
	((Word *)((char *)(  (Word *) &mercury_data_query__common_7 ) + ( ( 1 )  ))) ,
	((Word *)((char *)(  (Word *) (( (Integer) 1 ) << 3 )  ) + ( ( 0 )  ))) ,
	((Word *)((char *)(  (Word *) (( (Integer) 1 ) << 3 )  ) + ( ( 0 )  ))) ,
	((Word *)((char *)(  (Word *) (( (Integer) 1 ) << 3 )  ) + ( ( 0 )  ))) ,
	((Word *)((char *)(  (Word *) (( (Integer) 1 ) << 3 )  ) + ( ( 0 )  ))) ,
	((Word *)((char *)(  (Word *) (( (Integer) 1 ) << 3 )  ) + ( ( 0 )  ))) ,
	((Word *)((char *)(  (Word *) (( (Integer) 1 ) << 3 )  ) + ( ( 0 )  ))) ,
	((Word *)((char *)(  (Word *) (( (Integer) 1 ) << 3 )  ) + ( ( 0 )  ))) 
};
extern Code * mercury__io__write_string_3_0 (void) ;
extern Code * mercury__io__write_3_0 (void) ;
static  Code*  query_module0 (void); static  Code*  query_module0 (void) { 
	  ;
	  ;
	  ;
	  ;
	  ;
	  ;
	  ;
return 0; 
return ( ((Code *) (   mercury__query__IntroducedFrom__pred__run__15__2_3_0   ))  )  ;	}	static Code*  mercury__query__IntroducedFrom__pred__run__15__2_3_0 (void) { ;
	(	((void)0) ,	((void)0) ,	(( Word * )(  (  mr0 )  ))   = (( Word * )(  (  mr0 )  ))   + ( 3 ),	((void)0) ,	(void)0	) ;
	(( (( Word * )(  (  mr0 )  ))   )[-(   3  )])   = (Word) (( Code * )(  (  mr1 )  ))   ;
	(( (( Word * )(  (  mr0 )  ))   )[-(   1  )])   = ((const Word *) (( (  (  mr2 )   ) ) - (  ( ( 0 )  ) )) )[  (Integer) 0 ] ;
	(( (( Word * )(  (  mr0 )  ))   )[-(   2  )])   = ((const Word *) (( (  (  mr2 )   ) ) - (  ( ( 0 )  ) )) )[  (Integer) 1 ] ;
	(  mr4 )   = (  mr2 )  ;
	(  mr2 )   = (Word) ((Word *)  "X = " ) ;
	do {	((void)0) ;	do {	((void)0) ;	(( Code * )(  (  mr1 )  ))   = (  ((Code *) (     		mercury__query__IntroducedFrom__pred__run__15__2_3_0_i2   ))  );	((void)0) ;	return (  (  ((Code *) ( mercury__io__write_string_3_0 ))   )  ) ;	} while (0)  ;	} while (0) ;
return ( ((Code *) (   mercury__query__IntroducedFrom__pred__run__15__2_3_0_i2   ))  )  ;	}	static Code*  mercury__query__IntroducedFrom__pred__run__15__2_3_0_i2 (void) { ;
	((void)0) ;
	(  mr3 )   = (  mr2 )  ;
	(  mr2 )   = (Word) ((Word *)((char *)(  (Word *) &mercury_data_query__common_0 ) + ( ( 0 )  ))) ;
	(  mr4 )   = (  mr3 )  ;
	(  mr3 )   = (( (( Word * )(  (  mr0 )  ))   )[-(   1  )])  ;
	do {	((void)0) ;	do {	((void)0) ;	(( Code * )(  (  mr1 )  ))   = (  ((Code *) (     		mercury__query__IntroducedFrom__pred__run__15__2_3_0_i3   ))  );	((void)0) ;	return (  (  ((Code *) ( mercury__io__write_3_0 ))   )  ) ;	} while (0)  ;	} while (0) ;
return ( ((Code *) (   mercury__query__IntroducedFrom__pred__run__15__2_3_0_i3   ))  )  ;	}	static Code*  mercury__query__IntroducedFrom__pred__run__15__2_3_0_i3 (void) { ;
	((void)0) ;
	(  mr3 )   = (  mr2 )  ;
	(  mr2 )   = (Word) ((Word *)  ", " ) ;
	do {	((void)0) ;	do {	((void)0) ;	(( Code * )(  (  mr1 )  ))   = (  ((Code *) (     		mercury__query__IntroducedFrom__pred__run__15__2_3_0_i4   ))  );	((void)0) ;	return (  (  ((Code *) ( mercury__io__write_string_3_0 ))   )  ) ;	} while (0)  ;	} while (0) ;
return ( ((Code *) (   mercury__query__IntroducedFrom__pred__run__15__2_3_0_i4   ))  )  ;	}	static Code*  mercury__query__IntroducedFrom__pred__run__15__2_3_0_i4 (void) { ;
	((void)0) ;
	(  mr3 )   = (  mr2 )  ;
	(  mr2 )   = (Word) ((Word *)  "Y = " ) ;
	do {	((void)0) ;	do {	((void)0) ;	(( Code * )(  (  mr1 )  ))   = (  ((Code *) (     		mercury__query__IntroducedFrom__pred__run__15__2_3_0_i5   ))  );	((void)0) ;	return (  (  ((Code *) ( mercury__io__write_string_3_0 ))   )  ) ;	} while (0)  ;	} while (0) ;
return ( ((Code *) (   mercury__query__IntroducedFrom__pred__run__15__2_3_0_i5   ))  )  ;	}	static Code*  mercury__query__IntroducedFrom__pred__run__15__2_3_0_i5 (void) { ;
	((void)0) ;
	(  mr3 )   = (  mr2 )  ;
	(  mr2 )   = (Word) ((Word *)((char *)(  (Word *) &mercury_data_query__common_0 ) + ( ( 0 )  ))) ;
	(  mr4 )   = (  mr3 )  ;
	(  mr3 )   = (( (( Word * )(  (  mr0 )  ))   )[-(   2  )])  ;
	do {	((void)0) ;	do {	((void)0) ;	(( Code * )(  (  mr1 )  ))   = (  ((Code *) (     		mercury__query__IntroducedFrom__pred__run__15__2_3_0_i6   ))  );	((void)0) ;	return (  (  ((Code *) ( mercury__io__write_3_0 ))   )  ) ;	} while (0)  ;	} while (0) ;
return ( ((Code *) (   mercury__query__IntroducedFrom__pred__run__15__2_3_0_i6   ))  )  ;	}	static Code*  mercury__query__IntroducedFrom__pred__run__15__2_3_0_i6 (void) { ;
	((void)0) ;
	(  mr3 )   = (  mr2 )  ;
	(  mr2 )   = (Word) ((Word *)  ", " ) ;
	do {	((void)0) ;	do {	((void)0) ;	(( Code * )(  (  mr1 )  ))   = (  ((Code *) (     		mercury__query__IntroducedFrom__pred__run__15__2_3_0_i7   ))  );	((void)0) ;	return (  (  ((Code *) ( mercury__io__write_string_3_0 ))   )  ) ;	} while (0)  ;	} while (0) ;
return ( ((Code *) (   mercury__query__IntroducedFrom__pred__run__15__2_3_0_i7   ))  )  ;	}	static Code*  mercury__query__IntroducedFrom__pred__run__15__2_3_0_i7 (void) { ;
	((void)0) ;
	(  mr3 )   = (  mr2 )  ;
	(  mr2 )   = (Word) ((Word *)  "true ;\n" ) ;
	(( Code * )(  (  mr1 )  ))    = (Code *) (( (( Word * )(  (  mr0 )  ))   )[-(   3  )])  ;
	(	((void)0) ,	((void)0) ,	(( Word * )(  (  mr0 )  ))   = (( Word * )(  (  mr0 )  ))   - ( 3 ),	((void)0) ,	(void)0	) ;
	do {	((void)0) ;	((void)0) ;	((void)0) ;	return (  ((Code *) ( mercury__io__write_string_3_0 ))   ) ;	} while (0) ;
} 
extern Code * do_fail (void) ;
static  Code*  query_module1 (void); static  Code*  query_module1 (void) { 
	  ;
	  ;
return 0; 
return ( ((Code *) (   mercury__query__IntroducedFrom__pred__run__14__1_1_0   ))  )  ;	}	static Code*  mercury__query__IntroducedFrom__pred__run__14__1_1_0 (void) { ;
	do {	register 	Word	*prevfr;	register 	Word	*succfr;	prevfr = (( Word * )(  (  ((MR_engine_base. fake_reg ) ) [9]  )  ))  ;	succfr = (( Word * )(  (  ((MR_engine_base. fake_reg ) ) [8]  )  ))  ;	(( Word * )(  (  ((MR_engine_base. fake_reg ) ) [9]  )  ))   += (5  +   0 );	(( Word * )(  (  ((MR_engine_base. fake_reg ) ) [8]  )  ))   = (( Word * )(  (  ((MR_engine_base. fake_reg ) ) [9]  )  ))  ;	(( Code * )(  ((Word *) ( (( Word * )(  (  ((MR_engine_base. fake_reg ) ) [8]  )  ))   ))[(-1) ] ))   =   ((Code *) ( do_fail ))  ;	(( Word * )(  ((Word *) ( (( Word * )(  (  ((MR_engine_base. fake_reg ) ) [8]  )  ))   ))[(-0) ] ))   = prevfr;	(( Code * )(  ((Word *) ( (( Word * )(  (  ((MR_engine_base. fake_reg ) ) [8]  )  ))   ))[(-3) ] ))   = (( Code * )(  (  mr1 )  ))  ;	(( Word * )(  ((Word *) ( (( Word * )(  (  ((MR_engine_base. fake_reg ) ) [8]  )  ))   ))[(-4) ] ))   = succfr;	(( Word * )(  ((Word *) ( (( Word * )(  (  ((MR_engine_base. fake_reg ) ) [8]  )  ))   ))[(-2) ] ))   =!
!
!
 (( Word * )(  (  ((MR_engine_base. fake_reg ) ) [8]  )  ))  ;	 ;	((void)0) ;	((void)0) ;	} while (0) ;
	do {	((void)0) ;	do {	((void)0) ;	(( Code * )(  (  mr1 )  ))   = (  ((Code *) (     		mercury__query__IntroducedFrom__pred__run__14__1_1_0_i1   ))  );	((void)0) ;	return (  (  ((Code *) ( mercury__query__query_2_0 ))   )  ) ;	} while (0)  ;	} while (0) ;
return ( ((Code *) (   mercury__query__IntroducedFrom__pred__run__14__1_1_0_i1   ))  )  ;	}	static Code*  mercury__query__IntroducedFrom__pred__run__14__1_1_0_i1 (void) { ;
	((void)0) ;
	(  mr4 )   = (  mr2 )  ;
	(( ( ( (  mr2 )   ) ) ) = (Word) ((Word *)((char *)(  (Word) GC_malloc( (  (  (  (Integer) 2 ) ) ) * sizeof(Word) )  ) + ( (  (  (  ( 0 )  ) ) ) ))) )   ;
	((Word *) (( (  (  mr2 )   ) ) - (  ( ( 0 )  ) )) )[  (Integer) 0 ]  = (  mr4 )  ;
	((Word *) (( (  (  mr2 )   ) ) - (  ( ( 0 )  ) )) )[  (Integer) 1 ]  = (  mr3 )  ;
	do {	register 	Word	*childfr;	((void)0) ;	childfr = (( Word * )(  (  ((MR_engine_base. fake_reg ) ) [8]  )  ))  ;	(( Word * )(  (  ((MR_engine_base. fake_reg ) ) [8]  )  ))   = (( Word * )(  ((Word *) ( childfr ))[(-4) ] ))  ;	return ( (( Code * )(  ((Word *) ( childfr ))[(-3) ] ))   ) ;	} while (0) ;
} 

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]