let resolve_addr_taken () =
let remove_from_refs var =
if is_formal_var_type var then
(remove_ptr_reference_param var;
remove_array_reference_param var)
else
(ArgPReference.remove var; ArgAReference.remove var)
in
let s = "[resolves addr taken]" in
AddrTaken.iter
(fun var (m,r) ->
debug "%s %a +:%d -:%d" s pp_var_type var m r ;
if m > r then
(debug "%s %a: addr taken %d et %d" s pp_var_type var m r;
oracle"%s %a: stays addrtaken"s pp_var_type var;
remove_from_refs var)
else
(debug "%s %a: not addr taken %d et %d" s pp_var_type var m r;
oracle"%s %a: remove addrtaken"s pp_var_type var;
AddrTaken.remove var))