(* * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. *) (** The analysis' semantics of control flow. *) type exec_opts = { bound: int (** Loop/recursion unrolling bound *) ; skip_throw: bool (** Treat throw as unreachable *) ; function_summaries: bool (** Use function summarisation *) ; globals: [`Per_function of Var.Set.t Var.Map.t | `Declared of Var.Set.t] (** Either a per-function used-globals map or a program-wide set *) } module Make (Dom : Domain_sig.Dom) : sig val exec_pgm : exec_opts -> Llair.t -> unit val compute_summaries : exec_opts -> Llair.t -> Dom.summary list Var.Map.t end