let rec get_edge_next_stmt cfg e =
let v_after = edge_dst e in
let get_next v = match succ_e cfg v with
| [e] -> get_edge_next_stmt cfg e
| [] | _ :: _ -> None (* nodes without statement should have one succ,
except the last one *)
in
match !v_after.kind with
| VblkOut _ | VblkIn ((Bthen _|Belse _|Bloop _|Bfct),_) -> get_next v_after
| _ ->
match node_stmt_opt v_after with
| Some s -> Some s
| None -> get_next v_after