let find_available kinstr =
if From_parameters.ForceDeps.get () then begin
try
Callwise_Dependencies.find kinstr
with Not_found ->
From_parameters.fatal "internal error 457 : From.find_available called on non-Call statement, or called too early."
end
else begin
match kinstr with
| Kstmt ({skind = Instr(Call (_,funcexp,_,_))}) ->
let _, called_functions =
!Value.expr_to_kernel_function
~with_alarms:CilE.warn_none_mode
kinstr ~deps:None funcexp
in
let treat_kf _kf acc =
let kf_froms = (assert false)
in
match acc with
None -> Some kf_froms
| Some froms ->
Some (Function_Froms.join kf_froms froms)
in
let froms =
Kernel_function.Set.fold treat_kf called_functions None
in
begin
match froms with
None -> assert false
| Some f -> f
end
| _ ->
From_parameters.fatal "internal error 458 : From.find_available called on non-Call statement."
end