[m-rev.] for review: [CTGC] two bugfixes...

Nancy Nancy.Mazur at cs.kuleuven.ac.be
Tue Oct 17 15:49:04 AEST 2006


Julien Fischer wrote:
> 
> On Thu, 12 Oct 2006, Nancy Mazur wrote:
> 
>> Estimated hours taken: 3
>> Branches: main
>>
>> compiler/ctgc.util.m:
>>     (bugfix) Calls to type_list_subsumes_det were aborting for
>>     compiler generated procedures (TypeSpecOf__) although at that
>>     stage of the compiler, types should be unifiable. The fix consists
>>     of taking the empty type substitution whenever type_list_subsumes
>>     fails (inspired by inlining.get_type_substition).
>>
>> compiler/structure_reuse.domain.m:
>>     (bugfix) Fixpoint was never being reached when a recursive procedure
>>     had unconditional reuse resulting in neverending loops.
>>     The fix consists of stating that the unconditional reuse description
>>     obviously subsumes any other unconditional reuse description.
>>
>>
>>
>> Index: compiler/ctgc.util.m
>> ===================================================================
>> RCS file: /home/mercury1/repository/mercury/compiler/ctgc.util.m,v
>> retrieving revision 1.9
>> diff -u -d -r1.9 ctgc.util.m
>> --- compiler/ctgc.util.m    20 Aug 2006 08:20:56 -0000    1.9
>> +++ compiler/ctgc.util.m    12 Oct 2006 13:46:13 -0000
>> @@ -107,7 +107,19 @@
>>     % types of the head variables.
>>     pred_info_get_arg_types(PredInfo, FormalTypes),
>>
>> -    type_list_subsumes_det(FormalTypes, ActualTypes, TypeSubstitution).
>> +    (
>> +        type_list_subsumes(FormalTypes, ActualTypes, TypeSubstitution0)
>> +    ->
>> +        TypeSubstitution = TypeSubstitution0
>> +    ;
>> +        % XXX Sharing analysis of compiler generated procedures fails 
>> due
>> +        % to the fact that type_list_subsumes fails; I assume that the
>> +        % same reasoning as in inlining.get_type_substition/5 is 
>> applicable
> 
> s/get_type_substition/get_type_substitution/
> 
>> +        % here: "The head types should always be unifiable with the 
>> actual
>> +        % argument types, otherwise it is a type error that should have
>> +        % been detected by typechecking. [...]"
>> +        TypeSubstitution = map.init
>> +    ).
> 
> Yes, although the whole thing looks a bit dodgy (...we really should fix 
> polymorphism.m in this respect).  Until then this looks to be the best
> that can be done.
> 
> Julien.
> 


Ok, thx,
I will commit this this evening,

Nancy
--------------------------------------------------------------------------
mercury-reviews mailing list
Post messages to:       mercury-reviews at csse.unimelb.edu.au
Administrative Queries: owner-mercury-reviews at csse.unimelb.edu.au
Subscriptions:          mercury-reviews-request at csse.unimelb.edu.au
--------------------------------------------------------------------------



More information about the reviews mailing list