(**************************************************************************)
(*                                                                        *)
(*                                 OCaml                                  *)
(*                                                                        *)
(*                      Pierre Chambart, OCamlPro                         *)
(*                                                                        *)
    Copyright 2015 Institut National de Recherche en Informatique et     
(*     en Automatique.                                                    *)
(*                                                                        *)
(*   All rights reserved.  This file is distributed under the terms of    *)
    the GNU Lesser General Public License version 2.1 , with the          
(*   special exception on linking described in the file LICENSE.          *)
(*                                                                        *)
(**************************************************************************)

(** Compiler performance recording

  {b Warning:} this module is unstable and part of
  {{!Compiler_libs}compiler-libs}.

*)

type file = string

val reset : unit -> unit
(** erase all recorded profile information *)

val record_call : ?accumulate:bool -> string -> (unit -> 'a) -> 'a
* [ record_call pass f ] calls [ f ] and records its profile information .

val record : ?accumulate:bool -> string -> ('a -> 'b) -> 'a -> 'b
(** [record pass f arg] records the profile information of [f arg] *)

type column = [ `Time | `Alloc | `Top_heap | `Abs_top_heap ]

val print : Format.formatter -> column list -> timings_precision:int -> unit
(** Prints the selected recorded profiling information to the formatter. *)

(** Command line flags *)

val options_doc : string
val all_columns : column list

(** A few pass names that are needed in several places, and shared to
    avoid typos. *)

val generate : string
val transl : string
val typing : string

************************************************************************
                                                                        
                                 OCaml                                  
                                                                        
                      Pierre Chambart, OCamlPro                         
                                                                        
     en Automatique.                                                    
                                                                        
   All rights reserved.  This file is distributed under the terms of    
   special exception on linking described in the file LICENSE.          
                                                                        
************************************************************************
* Compiler performance recording

  {b Warning:} this module is unstable and part of
  {{!Compiler_libs}compiler-libs}.


* erase all recorded profile information 
* [record pass f arg] records the profile information of [f arg] 
* Prints the selected recorded profiling information to the formatter. 
* Command line flags 
* A few pass names that are needed in several places, and shared to
    avoid typos. 
    Copyright 2015 Institut National de Recherche en Informatique et     
    the GNU Lesser General Public License version 2.1 , with the          


type file = string

val reset : unit -> unit

val record_call : ?accumulate:bool -> string -> (unit -> 'a) -> 'a
* [ record_call pass f ] calls [ f ] and records its profile information .

val record : ?accumulate:bool -> string -> ('a -> 'b) -> 'a -> 'b

type column = [ `Time | `Alloc | `Top_heap | `Abs_top_heap ]

val print : Format.formatter -> column list -> timings_precision:int -> unit


val options_doc : string
val all_columns : column list


val generate : string
val transl : string
val typing : string
