(* These flags tell which intermediate programs should be
   displayed. *)

val dpp: bool
val dupp: bool
val drtl: bool
val dcse: bool
val dertl: bool
val dltl: bool
val dlin: bool
val dasm: bool

(* This flag tells whether liveness information should be
   displayed. *)

val dlive: bool

(* This tells whether an interference graph should be displayed, and,
   if so, for which procedure. *)

val dgraph: string option

(* This tells whether hardware register allocation and stack slot
   allocation should be made verbose, and, if so, for which procedure
   in particular. *)

val dcolor: string option
val dspill: string option

(* This flag pretends that the processor has fewer registers. Among
   other things, this helps visualize interference graphs. *)

val few: bool

(* This flag prevents common sub-expression elimiation (CSE). *)

val nocse: bool

(* These flags tell which intermediate programs should be
   interpreted. *)

val ipp: bool
val iupp: bool
val irtl: bool
val icse: bool
val iertl: bool
val iltl: bool
val ilin: bool

(* This integer value indicates how verbose we should be.
   It is used by [Error.log]. *)

val verbose: int

(* This function, controlled by the [-delimit] flag, possibly inserts
   begin and end markers around its second argument. This is used to
   delimit procedures in displayed code, and is useful for exporting
   code fragments into course slides. *)

val delimit: string -> string -> string

(* This is the name of the file that we should compile. *)

val filename: string