1 (**************************************************************************)
2 (* *)
3 (* OCaml *)
4 (* *)
5 (* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
6 (* *)
7 (* Copyright 1996 Institut National de Recherche en Informatique et *)
8 (* en Automatique. *)
9 (* *)
10 (* All rights reserved. This file is distributed under the terms of *)
11 (* the GNU Lesser General Public License version 2.1, with the *)
12 (* special exception on linking described in the file LICENSE. *)
13 (* *)
14 (**************************************************************************)
15
16 (** Lambda simplification.
17
18 {b Warning:} this module is unstable and part of
19 {{!Compiler_libs}compiler-libs}.
20
21 *)
22
23 (* Elimination of useless Llet(Alias) bindings.
24 Transformation of let-bound references into variables.
25 Simplification over staticraise/staticcatch constructs.
26 Generation of tail-call annotations if -annot is set. *)
27
28 open Lambda
29
30 val simplify_lambda: lambda -> lambda
31
32 val split_default_wrapper
33 : id:Ident.t
34 -> kind:function_kind
35 -> params:(Ident.t * Lambda.value_kind) list
36 -> return:Lambda.value_kind
37 -> body:lambda
38 -> attr:function_attribute
39 -> loc:Location.t
40 -> (Ident.t * lambda) list
41
42 (* To be filled by asmcomp/selectgen.ml *)
43 val is_tail_native_heuristic: (int -> bool) ref
44 (* # arguments -> can tailcall *)
45