Module ACSL.EqComp


module EqComp: Register(Cil_datatype.Compinfo.Hashtbl)(sig
type key = Cil_types.compinfo 
type data = LogicId.id 
val reprs : LogicId.id list
val name : string
val compile : ACSL.Record.H.key -> LogicId.id
end)


type value =
| Data of C.data
| Error of exn
| Locked
module D: Datatype.Make(sig
include Datatype.Undefined
type t = ACSL.Register.value 
val name : string
val reprs : ACSL.Register.value list
end)
module H: State_builder.Hashtbl(K)(D)(sig
val name : string
val dependencies : State.t list
val kind : [> `Tuning ]
val size : int
end)
val get_value : H.key -> H.data
val obtain : H.key -> C.data
Projectified and memoized C.compile. The compiler can not be recursive. An exception during the compilation is re-raised each time its value is requested.