@@ -265,7 +265,6 @@ struct
265265 let remove_out_of_scope_vars cc f =
266266 let local_vars = f.sformals @ f.slocals in
267267 let duplicated_vars = f.sformals in
268- let cc = D. remove_terms_containing_return_variable cc in
269268 D. remove_terms_containing_variables (Var. from_varinfo local_vars duplicated_vars) cc
270269
271270 let combine_env ctx lval_opt expr f args t_context_opt f_d (f_ask : Queries.ask ) =
@@ -306,32 +305,21 @@ struct
306305 match ctx.local with
307306 | `Bot -> `Bot
308307 | `Lifted d ->
309- let caller_ask = ask_of_man ctx in
310- (* assign function parameters to duplicated values *)
311- let arg_assigns = GobList. combine_short f.sformals args in
312- let assign_term st (var , arg ) =
313- let ghost_var = T. term_of_varinfo (DuplicVar var) in
314- let arg = T. of_cil f_ask arg in
315- assign_term st caller_ask ghost_var arg var.vtype
308+ let d =
309+ match var_opt with
310+ | None ->
311+ d
312+ | Some lval ->
313+ let return_type = typeOfLval lval in
314+ let return_var = MayBeEqual. return_var return_type in
315+ let return_var = (Some return_var, Some Z. zero) in
316+ assign_lval d f_ask lval return_var
316317 in
317- let state_with_assignments = List. fold_left assign_term d arg_assigns in
318- match D. meet (`Lifted state_with_assignments) f_d with
319- | `Bot -> `Bot
320- | `Lifted d ->
321- let d = match var_opt with
322- | None ->
323- d
324- | Some lval ->
325- let return_type = typeOfLval lval in
326- let return_var = MayBeEqual. return_var return_type in
327- let return_var = (Some return_var, Some Z. zero) in
328- assign_lval d f_ask lval return_var
329- in
330- if M. tracing then M. trace " c2po-function" " combine_assign1: assigning return value: %s\n " (C2PODomain. show d);
331- let d = remove_out_of_scope_vars d.data f in
332- let d = data_to_t d in
333- if M. tracing then M. trace " c2po-function" " combine_assign2: result: %s\n " (C2PODomain. show d);
334- `Lifted d
318+ if M. tracing then M. trace " c2po-function" " combine_assign1: assigning return value: %s\n " (C2PODomain. show d);
319+ let d = D. remove_terms_containing_return_variable d.data in
320+ let d = data_to_t d in
321+ if M. tracing then M. trace " c2po-function" " combine_assign2: result: %s\n " (C2PODomain. show d);
322+ `Lifted d
335323
336324 let startstate v =
337325 D. top ()
0 commit comments