let find_assignment_node f =
let size = Array.length f in
let assignment = Array.create size [] in
for i = 0 to size - 1 do
let add n t =
if not (List.mem_assoc n assignment.(i)) then
assignment.(i) <- ( n, t )::assignment.(i)
in
let rec check = function
ILstmtIf _ -> ()
| ILstmtSwitch _ -> ()
| ILstmtGoto _ -> ()
| ILstmtReturn _ -> ()
| ILstmtAssign( n, t, _ ) -> add n t
| ILstmtRead( n, t, _, _ ) -> add n t
| ILstmtWrite _ -> ()
| ILstmtInitialize( n, t, _ ) -> add n t
| ILstmtSequence l -> List.iter check l
| ILstmtParallel l -> List.iter check l
in
List.iter check f.(i).code
done;
assignment