Clflags(3)

🌸 NAME 🌸

Clflags β€” command line flags, but make it bestie-coded πŸ’…

okay so this is Clflags(3) from the OCaml library, and it is literally the command line flags module. It's giving "compiler internals but make it a group chat", no cap. Every flag, ref, and little signature is down below, so grab a snack πŸ“.


πŸ¦‹ Module πŸ¦‹

Module Clflags

that's the module, bestie. iconic. periodt.


πŸ’– Documentation πŸ’–

Module Clflags : sig end

Command line flags β€” yes, the whole thing is command line flags, and it's highkey a whole ecosystem of refs and vals.

🧚 Int_arg_helper & Float_arg_helper

  • module Int_arg_helper : sig end β€” optimization parameters represented as ints, indexed by round number.
  • module Float_arg_helper : sig end β€” optimization parameters represented as floats, indexed by round number.

those two are siblings fr fr: same energy, different number types ✨

πŸŽ€ type inlining_arguments

the inlining_arguments record is a whole vibe, and every field is exactly this:

type inlining_arguments = {
 inline_call_cost : int option ;
 inline_alloc_cost : int option ;
 inline_prim_cost : int option ;
 inline_branch_cost : int option ;
 inline_indirect_cost : int option ;
 inline_lifting_benefit : int option ;
 inline_branch_factor : float option ;
 inline_max_depth : int option ;
 inline_max_unroll : int option ;
 inline_threshold : float option ;
 inline_toplevel_threshold : int option ;
 }

🌈 the preset vals

  • val classic_arguments : inlining_arguments
  • val o1_arguments : inlining_arguments
  • val o2_arguments : inlining_arguments
  • val o3_arguments : inlining_arguments

four little presets, all lined up and ready πŸ’–

🫢 set the inlining args

val use_inlining_arguments_set : ?round:int -> inlining_arguments -> unit

this one sets all the inlining arguments for a round. if you don't give it a round, it sets the default. that's the whole deal, bestie.

✨ the giant val list ✨

okay so here is the entire val squad, in order, exactly as named. no skipping, no summarising, no "oops I dropped one" energy. this is the main character list πŸ‘‘

val objfiles : string list ref

val ccobjs : string list ref

val dllibs : (suffixed:bool * string) list ref

val cmi_file : string option ref

val compile_only : bool ref

val output_name : string option ref

val include_dirs : string list ref

val hidden_include_dirs : string list ref

val standard_library_default : string option ref

val no_std_include : bool ref

val no_cwd : bool ref

val print_types : bool ref

val make_archive : bool ref

val debug : bool ref

val debug_full : bool ref

val unsafe : bool ref

val use_linscan : bool ref

val link_everything : bool ref

val custom_runtime : bool ref

val no_check_prims : bool ref

val bytecode_compatible_32 : bool ref

val output_c_object : bool ref

val output_complete_object : bool ref

val output_complete_executable : bool ref

val all_ccopts : string list ref

val classic : bool ref

val nopervasives : bool ref

val match_context_rows : int ref

val safer_matching : bool ref

val open_modules : string list ref

val preprocessor : string option ref

val all_ppx : string list ref

val absname : bool ref

val annotations : bool ref

val binary_annotations : bool ref

val store_occurrences : bool ref

val use_threads : bool ref

val noassert : bool ref

val verbose : bool ref

val noprompt : bool ref

val nopromptcont : bool ref

val init_file : string option ref

val noinit : bool ref

val noversion : bool ref

val use_prims : string ref

val use_runtime : string ref

val target_bindir : string ref

val launch_method : Config.launch_method ref

val search_method : Config.search_method ref

val plugin : bool ref

val principal : bool ref

val print_variance : bool ref

val real_paths : bool ref

val recursive_types : bool ref

val strict_sequence : bool ref

val strict_formats : bool ref

val applicative_functors : bool ref

val make_runtime : bool ref

val c_compiler : string option ref

val no_auto_link : bool ref

val dllpaths : string list ref

val make_package : bool ref

val for_package : string option ref

val error_size : int ref

val float_const_prop : bool ref

val no_alias_deps : bool ref

val unique_ids : bool ref

val canonical_ids : bool ref

val locations : bool ref

val dump_source : bool ref

val dump_parsetree : bool ref

val dump_typedtree : bool ref

val dump_shape : bool ref

val dump_matchcomp : bool ref

val dump_rawlambda : bool ref

val dump_lambda : bool ref

val dump_rawclambda : bool ref

val dump_clambda : bool ref

val dump_rawflambda : bool ref

val dump_flambda : bool ref

val dump_flambda_let : int option ref

val dump_instr : bool ref

val keep_camlprimc_file : bool ref

val keep_asm_file : bool ref

val optimize_for_speed : bool ref

val dump_cmm : bool ref

val dump_selection : bool ref

val dump_cse : bool ref

val dump_live : bool ref

val dump_spill : bool ref

val dump_split : bool ref

val dump_interf : bool ref

val dump_prefer : bool ref

val dump_regalloc : bool ref

val dump_reload : bool ref

val dump_scheduling : bool ref

val dump_linear : bool ref

val dump_interval : bool ref

val keep_startup_file : bool ref

val dump_combine : bool ref

val native_code : bool ref

val default_inline_threshold : float

val inline_threshold : Float_arg_helper.parsed ref

val inlining_report : bool ref

val simplify_rounds : int option ref

val default_simplify_rounds : int ref

val rounds : unit -> int

val default_inline_max_unroll : int

val inline_max_unroll : Int_arg_helper.parsed ref

val default_inline_toplevel_threshold : int

val inline_toplevel_threshold : Int_arg_helper.parsed ref

val default_inline_call_cost : int

val default_inline_alloc_cost : int

val default_inline_prim_cost : int

val default_inline_branch_cost : int

val default_inline_indirect_cost : int

val default_inline_lifting_benefit : int

val inline_call_cost : Int_arg_helper.parsed ref

val inline_alloc_cost : Int_arg_helper.parsed ref

val inline_prim_cost : Int_arg_helper.parsed ref

val inline_branch_cost : Int_arg_helper.parsed ref

val inline_indirect_cost : Int_arg_helper.parsed ref

val inline_lifting_benefit : Int_arg_helper.parsed ref

val default_inline_branch_factor : float

val inline_branch_factor : Float_arg_helper.parsed ref

val dont_write_files : bool ref

val std_include_flag : string -> string

val std_include_dir : unit -> string list

val shared : bool ref

val dlcode : bool ref

val pic_code : bool ref

val runtime_variant : string ref

val with_runtime : bool ref

val force_slash : bool ref

val keep_docs : bool ref

val keep_locs : bool ref

val opaque : bool ref

val profile_columns : [ `Abs_top_heap | `Alloc | `Time | `Top_heap ] list ref

val flambda_invariant_checks : bool ref

val unbox_closures : bool ref

val unbox_closures_factor : int ref

val default_unbox_closures_factor : int

val unbox_free_vars_of_closures : bool ref

val unbox_specialised_args : bool ref

val clambda_checks : bool ref

val cmm_invariants : bool ref

val parsetree_ghost_loc_invariant : bool ref

val default_inline_max_depth : int

val inline_max_depth : Int_arg_helper.parsed ref

val remove_unused_arguments : bool ref

val dump_flambda_verbose : bool ref

val classic_inlining : bool ref

val afl_instrument : bool ref

val afl_inst_ratio : int ref

val function_sections : bool ref

val all_passes : string list ref

val dumped_pass : string -> bool

val set_dumped_pass : string -> bool -> unit

val dump_into_file : bool ref

val dump_dir : string option ref

val keyword_edition : string option ref

val parse_keyword_edition : string -> (int * int) option * string list

πŸ¦‹ 'a env_reader

then there's this type, and yes it is exactly this shape:

type 'a env_reader = {
 parse : string -> 'a option ;
 print : 'a -> string ;
 usage : string ;
 env_var : string ;
 }

🌟 color + error style reader vals

  • val color : Misc.Color.setting option ref
  • val color_reader : Misc.Color.setting env_reader
  • val error_style : Misc.Error_style.setting option ref
  • val error_style_reader : Misc.Error_style.setting env_reader

πŸ’œ more vals, still iconic

val unboxed_types : bool ref

val insn_sched : bool ref

val insn_sched_default : bool

πŸ‘‘ Compiler_pass module + friends

  • module Compiler_pass : sig end
val stop_after : Compiler_pass.t option ref

val should_stop_after : Compiler_pass.t -> bool

val set_save_ir_after : Compiler_pass.t -> bool -> unit

val should_save_ir_after : Compiler_pass.t -> bool

πŸŽ€ Dump_option module + arg helpers

  • module Dump_option : sig end
val arg_spec : (string * Arg.spec * string) list ref

val add_arguments : string -> (string * Arg.spec * string) list -> unit

val create_usage_msg : string -> string

val print_arguments : string -> unit

val reset_arguments : unit -> unit

and that's the whole page, bestie. every single val, module, type, field, and signature is here, no cap πŸ’–

this iconic manual page was served up by OCamldoc on 2026-06-22, and it is literally Clflags(3) β€” byeee πŸ¦‹βœ¨πŸ’…

πŸ“¦ where this page comes from