let get_concrete_value_of_return (f:string) =
let kf = Globals.Functions.find_by_name f in
let rstmt =
try Kernel_function.find_return kf
with Kernel_function.No_Statement ->
Aorai_option.fatal "Don't know what to do with a function declaration"
in
match rstmt.skind with
| Cil_types.Return (Some (e),_) -> e.enode
| Block (b) ->
begin
let s=(List.hd (List.rev b.bstmts)) in
match s.skind with
| Cil_types.Return (Some (e),_) -> e.enode
| _ ->
Aorai_option.fatal
"The stmt %d have to be a return of the function %s, but it is not a well formed stmt." rstmt.sid f
end
| _ -> Aorai_option.fatal
"The stmt %d have to be a return of the function %s, but it is not a well formed stmt." rstmt.sid f