Module Flambda_to_clambda

type result = {
  1. expr : Clambda.ulambda;
  2. preallocated_blocks : Clambda.preallocated_block list;
  3. structured_constants : Clambda.ustructured_constant Symbol.Map.t;
  4. exported : Export_info.t;
}

Convert an Flambda program, with associated proto-export information, to Clambda. This yields a Clambda expression together with augmented export information and details about required statically-allocated values (preallocated blocks, for Initialize_symbol, and structured constants).

It is during this process that accesses to variables within closures are transformed to field accesses within closure values. For direct calls, the hidden closure parameter is added. Switch tables are also built.