let process_call_params pdg d_state stmt called_kf arg_nodes =
    let ctrl_node = ctrl_call_node pdg stmt in
    let param_list = Kernel_function.get_formals called_kf in
    let process_param state param arg =
      let new_node = arg in
      let _ = add_ctrl_dpd pdg new_node ctrl_node in
        State.add_loc_node state (var_to_loc param) new_node ~exact:true
    in
    let rec do_param_arg state param_list arg_nodes =
      match param_list, arg_nodes with
        | [], [] -> state
        | p :: param_list, a :: arg_nodes ->
            let state = process_param state p a in
              do_param_arg state param_list arg_nodes
        | [], _ -> (* call to a variadic function *)
            (* warning already sent during 'from' computation. *)
            state
        | _, [] -> Macros.bug "call to a function with to few arguments"
    in do_param_arg d_state param_list arg_nodes