[m-rev.] diff: Add type cast in construction of direct arg functor value.

Peter Wang novalazy at gmail.com
Fri Sep 19 18:02:41 AEST 2014


Branches: master, 14.01

Add a type cast to the code generated by ml_gen_direct_arg_deconstruct
to construct a value with a direct argument functor.  The cast exists in
the same code generated by ml_gen_direct_arg_construct.

compiler/ml_unify_gen.m:
	As above.

diff --git a/compiler/ml_unify_gen.m b/compiler/ml_unify_gen.m
index 1f766b9..7059e0f 100644
--- a/compiler/ml_unify_gen.m
+++ b/compiler/ml_unify_gen.m
@@ -2099,7 +2099,9 @@ ml_gen_direct_arg_deconstruct(ModuleInfo, Mode, Ptag,
     ->
         ml_gen_box_or_unbox_rval(ModuleInfo, ArgType, VarType,
             native_if_possible, ml_lval(ArgLval), ArgRval),
-        Statement = ml_gen_assign(VarLval, ml_mkword(Ptag, ArgRval), Context),
+        MLDS_Type = mercury_type_to_mlds_type(ModuleInfo, VarType),
+        CastRval = ml_unop(cast(MLDS_Type), ml_mkword(Ptag, ArgRval)),
+        Statement = ml_gen_assign(VarLval, CastRval, Context),
         Statements = [Statement]
     ;
         % Unused - unused: the unification has no effect.



More information about the reviews mailing list