[m-rev.] diff: back out an incorrect change to abstractly_unify_inst_functor

Fergus Henderson fjh at cs.mu.OZ.AU
Sun Jul 14 03:00:36 AEST 2002



It would be nice to move the test case to tests/invalid, rather than deleting
it.

On 05-Jul-2002, David Overton <dmo at cs.mu.OZ.AU> wrote:
> 
> Estimated hours taken: 0.1
> Branches: main
> 
> compiler/inst_util.m:
> tests/valid/Mmakefile:
> tests/valid/any_functor_unify.m:
> 	Back out a change which permitted unification of variables of
> 	inst `any' with functors.  Having this feature would require
> 	support from the code generator which does not exist.  The
> 	change was originally made in response to a bug report from the
> 	HAL project, but it turns out that this was actually a bug in
> 	the HAL compiler -- it is supposed to convert such unifications
> 	to a predicate call in the generated Mercury code but was not
> 	doing that.
> 
> 
> Index: compiler/inst_util.m
> ===================================================================
> RCS file: /home/mercury1/repository/mercury/compiler/inst_util.m,v
> retrieving revision 1.21
> diff -u -r1.21 inst_util.m
> --- compiler/inst_util.m	9 May 2002 05:00:53 -0000	1.21
> +++ compiler/inst_util.m	4 Jul 2002 23:23:31 -0000
> @@ -516,6 +516,8 @@
>  :- mode abstractly_unify_inst_functor_2(in, in, in, in, in, in, in,
>  			out, out, out) is semidet.
>  
> +	% XXX need to handle `any' insts
> +
>  abstractly_unify_inst_functor_2(live, not_reached, _, _, _, _, M,
>  			not_reached, erroneous, M).
>  
> @@ -527,12 +529,6 @@
>  	maybe_make_shared_inst_list(Args0, ArgLives, ModuleInfo0,
>  			Args, ModuleInfo).
>  
> -abstractly_unify_inst_functor_2(live, any(Uniq), ConsId, ArgInsts,
> -		ArgLives, Real, M0, Inst, Det, M) :-
> -	make_any_inst_list_lives(ArgInsts, live, ArgLives, Uniq, Real, M0,
> -		AnyArgInsts, Det, M),
> -	Inst = bound(Uniq, [functor(ConsId, AnyArgInsts)]).
> -
>  abstractly_unify_inst_functor_2(live, bound(Uniq, ListX), ConsId, Args,
>  			ArgLives, Real, M0, bound(Uniq, List), Det, M) :-
>  	abstractly_unify_bound_inst_list_lives(ListX, ConsId, Args, ArgLives,
> @@ -554,11 +550,6 @@
>  abstractly_unify_inst_functor_2(dead, free, ConsId, Args, _ArgLives, _Real, M,
>  			bound(unique, [functor(ConsId, Args)]), det, M).
>  
> -abstractly_unify_inst_functor_2(dead, any(Uniq), ConsId, ArgInsts,
> -		_ArgLives, Real, M0, Inst, Det, M) :-
> -	make_any_inst_list(ArgInsts, dead, Uniq, Real, M0, AnyArgInsts, Det, M),
> -	Inst = bound(Uniq, [functor(ConsId, AnyArgInsts)]).
> -
>  abstractly_unify_inst_functor_2(dead, bound(Uniq, ListX), ConsId, Args,
>  			_ArgLives, Real, M0, bound(Uniq, List), Det, M) :-
>  	ListY = [functor(ConsId, Args)],
> @@ -1078,26 +1069,6 @@
>  		Inst, Det1, ModuleInfo1),
>  	make_any_inst_list(Insts0, Live, Uniq, Real, ModuleInfo1,
>  		Insts, Det2, ModuleInfo),
> -	det_par_conjunction_detism(Det1, Det2, Det).
> -
> -:- pred make_any_inst_list_lives(list(inst), is_live, list(is_live),
> -			uniqueness, unify_is_real,
> -			module_info, list(inst), determinism, module_info).
> -:- mode make_any_inst_list_lives(in, in, in, in, in, in, out, out, out)
> -				is semidet.
> -
> -make_any_inst_list_lives([], _, _, _, _, ModuleInfo, [], det, ModuleInfo).
> -make_any_inst_list_lives([Inst0 | Insts0], Live, [ArgLive | ArgLives],
> -		Uniq, Real, ModuleInfo0, [Inst | Insts], Det, ModuleInfo) :-
> -	( Live = live, ArgLive = live ->
> -		BothLive = live
> -	;
> -		BothLive = dead
> -	),
> -	make_any_inst(Inst0, BothLive, Uniq, Real, ModuleInfo0,
> -		Inst, Det1, ModuleInfo1),
> -	make_any_inst_list_lives(Insts0, Live, ArgLives, Uniq, Real,
> -		ModuleInfo1, Insts, Det2, ModuleInfo),
>  	det_par_conjunction_detism(Det1, Det2, Det).
>  
>  %-----------------------------------------------------------------------------%
> Index: tests/valid/Mmakefile
> ===================================================================
> RCS file: /home/mercury1/repository/tests/valid/Mmakefile,v
> retrieving revision 1.105
> diff -u -r1.105 Mmakefile
> --- tests/valid/Mmakefile	1 Jun 2002 13:34:45 -0000	1.105
> +++ tests/valid/Mmakefile	4 Jul 2002 23:23:32 -0000
> @@ -51,7 +51,6 @@
>  	foreign_type_spec.m
>  
>  OTHER_SOURCES= \
> -	any_functor_unify.m \
>  	any_inst_merge.m \
>  	common_struct_bug.m \
>  	compl_unify_bug.m \
> Index: tests/valid/any_functor_unify.m
> ===================================================================
> RCS file: tests/valid/any_functor_unify.m
> diff -N tests/valid/any_functor_unify.m
> --- tests/valid/any_functor_unify.m	9 May 2002 05:00:55 -0000	1.1
> +++ /dev/null	1 Jan 1970 00:00:00 -0000
> @@ -1,13 +0,0 @@
> -:- module any_functor_unify.
> -:- interface.
> -
> -:- type wrap ---> wrap(int).
> -:- inst wrap(I) ---> wrap(I).
> -
> -:- pred p(wrap).
> -:- mode p(in(any)) is det.
> -
> -:- implementation.
> -
> -p(X) :-
> -	X = wrap(_).
> -- 
> David Overton                   The University of Melbourne  +61 3 8344 9159
> dmo at cs.mu.oz.au                 Monash University (Clayton)  +61 3 9905 5779
> http://www.cs.mu.oz.au/~dmo     Mobile Phone                 +61 4 0337 4393
> --------------------------------------------------------------------------
> 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
> --------------------------------------------------------------------------

-- 
Fergus Henderson <fjh at cs.mu.oz.au>  |  "I have always known that the pursuit
The University of Melbourne         |  of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh>  |     -- the last words of T. S. Garp.
--------------------------------------------------------------------------
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