Lift_let_to_initialize_symbol
val lift :
backend:(module Backend_intf.S) ->
Flambda.program ->
Flambda.program
Lift toplevel Let
-expressions to Flambda program
constructions such that the results of evaluation of such expressions may be accessed directly, through symbols, rather than through closures. The Let
-expressions typically come from the compilation of modules (using the bytecode strategy) in Translmod
.
This means of compilation supersedes the old "transl_store_" methodology for native code.
An Initialize_symbol
construction generated by this pass may be subsequently rewritten to Let_symbol
if it is discovered that the initializer is in fact constant. (See Initialize_symbol_to_let_symbol
.)
The program
constructions generated by this pass will be joined by others that arise from the lifting of constants (see Lift_constants
).