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
Pdg_state.add_loc_node
state (Locations.zone_of_varinfo 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
| [], _ ->
state
| _, [] -> Macros.bug "call to a function with to few arguments"
in do_param_arg d_state param_list arg_nodes