12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455openAnnotationstypereturnaddress_kind=|OnStack|OnRegtypef_annot={retaddr_kind:returnaddress_kindoption;stack_allocation_size:Z.toption;stack_size:Z.toption;stack_align:wsizeoption;max_call_depth:Z.toption;stack_zero_strategy:(Stack_zero_strategy.stack_zero_strategy*wsizeoption)option;f_user_annot:annotations;}letf_annot_empty={retaddr_kind=None;stack_allocation_size=None;stack_size=None;stack_align=None;max_call_depth=None;stack_zero_strategy=None;f_user_annot=[];}typecall_conv=|Export(** The function should be exported to the outside word *)|Subroutine(** internal function that should not be inlined *)|Internal(** internal function that should be inlined *)letis_subroutine=function|Subroutine->true|_->falseletis_export=function|Export->true|_->false(* ------------------------------------------------------------------------ *)typereturn_info={ret_annot:Annotations.annotationslist;(* annotation attached to return type *)ret_loc:Location.t;(* location of the return statement *)}(* ------------------------------------------------------------------------ *)typet=Location.t*f_annot*call_conv*return_infoletentry_info(fi:t):IInfo.t=let(fl,_,_,_)=fiin(Location.i_loc0fl,[])letret_info(fi:t):IInfo.t=let(_,_,_,ri)=fiin(Location.i_loc0ri.ret_loc,[])