let insert_pending_statements f =
f.sbody.bstmts <-
List.rev_append !pending_statements_at_beginning f.sbody.bstmts;
pending_statements_at_beginning := [];
match !pending_statements_at_end with [] -> () | slist ->
(* Insert pending statements before return statement *)
let return_stat =
Kernel_function.find_return (Globals.Functions.get f.svar)
in
(* Remove labels from the single return statement. Leave them on the most
* external block with cleanup code instead.
*)
let s = { return_stat with labels = []; } in
let block = mkBlock (List.rev_append (s :: slist) []) in
return_stat.skind <- Block block;
pending_statements_at_end := []