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))