Import Debian changes 20180207-1
[hcoop/debian/mlton.git] / mlton / ssa / analyze.sig
CommitLineData
7f918cf1
CE
1(* Copyright (C) 2009 Matthew Fluet.
2 * Copyright (C) 1999-2006 Henry Cejtin, Matthew Fluet, Suresh
3 * Jagannathan, and Stephen Weeks.
4 * Copyright (C) 1997-2000 NEC Research Institute.
5 *
6 * MLton is released under a BSD-style license.
7 * See the file MLton-LICENSE for details.
8 *)
9
10signature ANALYZE_STRUCTS =
11 sig
12 include DIRECT_EXP
13 end
14
15signature ANALYZE =
16 sig
17 include ANALYZE_STRUCTS
18
19 val analyze:
20 {coerce: {from: 'a,
21 to: 'a} -> unit,
22 conApp: {args: 'a vector,
23 con: Con.t} -> 'a,
24 const: Const.t -> 'a,
25 filter: 'a * Con.t * 'a vector -> unit,
26 filterWord: 'a * WordSize.t -> unit,
27 fromType: Type.t -> 'a,
28 layout: 'a -> Layout.t,
29 primApp: {args: 'a vector,
30 prim: Type.t Prim.t,
31 resultType: Type.t,
32 resultVar: Var.t option,
33 targs: Type.t vector} -> 'a,
34 program: Program.t,
35 select: {offset: int,
36 resultType: Type.t,
37 tuple: 'a} -> 'a,
38 tuple: 'a vector -> 'a,
39 useFromTypeOnBinds: bool
40 }
41 -> {
42 value: Var.t -> 'a,
43 func: Func.t -> {args: 'a vector,
44 raises: 'a vector option,
45 returns: 'a vector option},
46 label: Label.t -> 'a vector
47 }
48 end