@@ -33,6 +33,9 @@ open CHLanguage
3333open CHNumerical
3434open CHPretty
3535
36+ (* chutil *)
37+ open CHLogger
38+
3639(* xprlib *)
3740open Xprt
3841open XprTypes
@@ -157,16 +160,16 @@ object (self)
157160 else
158161 env#mk_program_var vinfo eoffset NUM_VAR_TYPE
159162 | (Var _ , _ ) -> env#mk_temp NUM_VAR_TYPE
160- | (Mem e ,offset ) ->
163+ | (Mem e , offset ) ->
161164 match self#translate_exp context e with
162165 | XVar v when env#is_memory_address v ->
163- let (memref,moffset) = env#get_memory_address v in
166+ let (memref, moffset) = env#get_memory_address v in
164167 env#mk_memory_variable
165168 memref#index (add_offset moffset offset) NUM_VAR_TYPE
166169 | XVar v when env#is_initial_value v ->
167170 let memref =
168171 env#get_variable_manager#memrefmgr#mk_external_reference
169- v (type_of_lval fdecls lval ) in
172+ v (type_of_exp fdecls e ) in
170173 env#mk_memory_variable memref#index offset NUM_VAR_TYPE
171174 | XVar _ -> env#mk_temp NUM_VAR_TYPE
172175 | _ -> env#mk_temp NUM_VAR_TYPE
@@ -193,7 +196,8 @@ object (self)
193196 begin
194197 match memxpr with
195198 | XVar v when env#is_initial_value v || env#is_function_return_value v ->
196- let memref = vmgr#memrefmgr#mk_external_reference v ftype in
199+ let memtype = type_of_exp fdecls e in
200+ let memref = vmgr#memrefmgr#mk_external_reference v memtype in
197201 XVar (env#mk_memory_address_value memref#index offset)
198202 | XVar v when env#is_memory_address v ->
199203 let (memref, moffset) = env#get_memory_address v in
@@ -435,7 +439,8 @@ object (self)
435439 begin
436440 match memxpr with
437441 | XVar v when env#is_initial_value v || env#is_function_return_value v ->
438- let memref = vmgr#memrefmgr#mk_external_reference v ftype in
442+ let memtype = type_of_exp fdecls e in
443+ let memref = vmgr#memrefmgr#mk_external_reference v memtype in
439444 XVar (env#mk_memory_address_value memref#index offset)
440445 | XVar v when env#is_memory_address v -> XVar v
441446 | _ ->
@@ -693,7 +698,8 @@ object (self)
693698 begin
694699 match memxpr with
695700 | XVar v when env#is_initial_value v || env#is_function_return_value v ->
696- let memref = vmgr#memrefmgr#mk_external_reference v ftype in
701+ let memtype = type_of_exp fdecls e in
702+ let memref = vmgr#memrefmgr#mk_external_reference v memtype in
697703 XVar (env#mk_memory_address_value memref#index offset)
698704 | XVar v when env#is_memory_address v -> XVar v
699705 | _ ->
@@ -765,7 +771,7 @@ object (self)
765771 | XVar v when env#is_initial_value v ->
766772 let memref =
767773 env#get_variable_manager#memrefmgr#mk_external_reference
768- v (type_of_lval fdecls lval ) in
774+ v (type_of_exp fdecls e ) in
769775 env#mk_memory_variable memref#index offset SYM_VAR_TYPE
770776 | _ ->
771777 env#mk_temp SYM_VAR_TYPE
0 commit comments