let collect_arg_array_call s x n b p =
if AnyVar.mem x then
(oracle "%s %a AnyVar" s pp_var_type x ;())
else
try
let (arr,calls) = ArgAReference.find x in
oracle "%s %a ArfARef" s pp_var_type x;
if n <= arr then
(oracle "%s %a + call(%a,%d,%s)" s pp_var_type x
pp_var_type p n (string_addr b);
ArgAReference.replace x (arr,((n,(b,p))::calls)))
else
(oracle "%s %a remove %d used %d" s pp_var_type x arr n;
remove_array_reference_arg x)
with Not_found ->
oracle "%s %a not yet in ArgAref" s pp_var_type x;
oracle "%s %a try to collect with %d"
s pp_var_type x n;
if isVarTypePointerType x then collect_arg_ptr_call s x n b p
else
(if n <> 0 then
(oracle"%s %a + call(%a,%d,%s)"
s pp_var_type x pp_var_type p n (string_addr b);
add_array_reference_arg x n;
try let (n,calls) = ArgAReference.find x in
ArgAReference.replace x (n,(n,(b,p))::calls)
with Not_found -> ())
else ())