sig
  type file = string
  type source_provenance =
      File of Timings.file
    | Pack of string
    | Startup
    | Toplevel
  type compiler_pass =
      All
    | Parsing of Timings.file
    | Preprocessing of Timings.file
    | Typing of Timings.file
    | Transl of Timings.file
    | Generate of Timings.file
    | Assemble of Timings.source_provenance
    | Clambda of Timings.source_provenance
    | Cmm of Timings.source_provenance
    | Compile_phrases of Timings.source_provenance
    | Selection of Timings.source_provenance
    | Comballoc of Timings.source_provenance
    | CSE of Timings.source_provenance
    | Liveness of Timings.source_provenance
    | Deadcode of Timings.source_provenance
    | Spill of Timings.source_provenance
    | Split of Timings.source_provenance
    | Regalloc of Timings.source_provenance
    | Linearize of Timings.source_provenance
    | Scheduling of Timings.source_provenance
    | Emit of Timings.source_provenance
    | Flambda_pass of string * Timings.source_provenance
  val reset : unit -> unit
  val get : Timings.compiler_pass -> float option
  val time : Timings.compiler_pass -> ('-> 'b) -> '-> 'b
  val accumulate_time : Timings.compiler_pass -> ('-> 'b) -> '-> 'b
  val print : Format.formatter -> unit
end