Module Flambda2_to_cmm.To_cmm_shared
Helper functions and values for Flambda 2 to Cmm translation. Functions in this module, unlike the ones in Cmm_helpers, depend on Flambda 2 data types.
val const_static : Flambda2_identifiers.Reg_width_const.t -> Cmm.data_item listval remove_skipped_params :
(Backend_var.With_provenance.t
* Cmm.machtype Flambda2_to_cmm.To_cmm_env.param_type)
list ->
(Backend_var.With_provenance.t * Cmm.machtype) listval remove_skipped_args :
'a list ->
_ Flambda2_to_cmm.To_cmm_env.param_type list ->
'a listval remove_var_with_provenance :
Flambda2_to_cmm.To_cmm_env.free_vars ->
Backend_var.With_provenance.t ->
Flambda2_to_cmm.To_cmm_env.free_varsval remove_var_opt_with_provenance :
Flambda2_to_cmm.To_cmm_env.free_vars ->
Backend_var.With_provenance.t option ->
Flambda2_to_cmm.To_cmm_env.free_varsval remove_vars_with_machtype :
Flambda2_to_cmm.To_cmm_env.free_vars ->
(Backend_var.With_provenance.t * _) list ->
Flambda2_to_cmm.To_cmm_env.free_varsval exttype_of_kind : Flambda2_kinds.Flambda_kind.t -> Cmm.exttypeval machtype_of_kind :
Flambda2_kinds.Flambda_kind.With_subkind.t ->
Cmm.machtypeval extended_machtype_of_kind :
Flambda2_kinds.Flambda_kind.With_subkind.t ->
Cmm_helpers.Extended_machtype.tval machtype_of_kinded_parameter :
Flambda2_bound_identifiers.Bound_parameter.t ->
Cmm.machtypeval param_machtype_of_kinded_parameter :
Flambda2_bound_identifiers.Bound_parameter.t ->
Cmm.machtype Flambda2_to_cmm.To_cmm_env.param_typeval memory_chunk_of_kind :
Flambda2_kinds.Flambda_kind.With_subkind.t ->
Cmm.memory_chunkval targetint :
dbg:Debuginfo.t ->
Flambda2_numbers.Targetint_32_64.t ->
Cmm.expressionCreate a constant int expression from a targetint.
val tag_targetint :
Flambda2_numbers.Targetint_32_64.t ->
Flambda2_numbers.Targetint_32_64.tval nativeint_of_targetint :
Flambda2_numbers.Targetint_32_64.t ->
Stdlib.Nativeint.tval name :
Flambda2_to_cmm.To_cmm_env.t ->
Flambda2_to_cmm.To_cmm_result.t ->
Flambda2_identifiers.Name.t ->
Flambda2_to_cmm.To_cmm_env.translation_resultThis does not inline effectful expressions.
val const :
dbg:Debuginfo.t ->
Flambda2_identifiers.Reg_width_const.t ->
Cmm.expressionval simple :
?consider_inlining_effectful_expressions:bool ->
dbg:Debuginfo.t ->
Flambda2_to_cmm.To_cmm_env.t ->
Flambda2_to_cmm.To_cmm_result.t ->
Flambda2_term_basics.Simple.t ->
Flambda2_to_cmm.To_cmm_env.translation_resultThe default behaviour is to use Flambda_features.Expert.inline_effects_in_cmm, which defaults to false if no command-line flag is given.
val simple_static :
Flambda2_to_cmm.To_cmm_result.t ->
Flambda2_term_basics.Simple.t ->
[> `Static_data of Cmm.data_item list
| `Var of Flambda2_identifiers.Variable.t ]val simple_list :
?consider_inlining_effectful_expressions:bool ->
dbg:Debuginfo.t ->
Flambda2_to_cmm.To_cmm_env.t ->
Flambda2_to_cmm.To_cmm_result.t ->
Flambda2_term_basics.Simple.t list ->
Cmm.expression list
* Flambda2_to_cmm.To_cmm_env.free_vars
* Flambda2_to_cmm.To_cmm_env.t
* Flambda2_to_cmm.To_cmm_result.t
* Flambda2_terms.Effects_and_coeffects.tThis function translates the Simple at the head of the list first. Regarding consider_inlining_effectful_expressions, see simple above.
val continuation_bound_parameters :
Flambda2_to_cmm.To_cmm_env.t ->
Flambda2_bound_identifiers.Bound_parameters.t ->
Flambda2_to_cmm.To_cmm_env.t
* (Backend_var.With_provenance.t
* Cmm.machtype Flambda2_to_cmm.To_cmm_env.param_type)
listval function_bound_parameters :
Flambda2_to_cmm.To_cmm_env.t ->
Flambda2_bound_identifiers.Bound_parameters.t ->
Flambda2_to_cmm.To_cmm_env.t
* (Backend_var.With_provenance.t * Cmm.machtype) listval invalid :
Flambda2_to_cmm.To_cmm_result.t ->
message:string ->
Cmm.expression * Flambda2_to_cmm.To_cmm_result.tmodule Update_kind : sig ... endval make_update :
Flambda2_to_cmm.To_cmm_env.t ->
Flambda2_to_cmm.To_cmm_result.t ->
Debuginfo.t ->
Flambda2_to_cmm.To_cmm_shared.Update_kind.t ->
symbol:Cmm.expression ->
Flambda2_identifiers.Variable.t ->
index:int ->
prev_updates:Flambda2_to_cmm.To_cmm_env.expr_with_info option ->
Flambda2_to_cmm.To_cmm_env.t
* Flambda2_to_cmm.To_cmm_result.t
* Flambda2_to_cmm.To_cmm_env.expr_with_info optionMake an update to a statically-allocated block.
val check_arity : _ Flambda2_kinds.Flambda_arity.t -> _ list -> boolval extended_machtype_of_return_arity :
[ `Unarized ] Flambda2_kinds.Flambda_arity.t ->
Cmm_helpers.Extended_machtype.tval alloc_mode_for_applications_to_cmx :
Flambda2_term_basics.Alloc_mode.For_applications.t ->
Cmx_format.alloc_modeval alloc_mode_for_allocations_to_cmm :
Flambda2_term_basics.Alloc_mode.For_allocations.t ->
Cmm.Alloc_mode.t