File: ssa.sig

package info (click to toggle)
mlton 20210117%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 58,464 kB
  • sloc: ansic: 27,682; sh: 4,455; asm: 3,569; lisp: 2,879; makefile: 2,347; perl: 1,169; python: 191; pascal: 68; javascript: 7
file content (36 lines) | stat: -rw-r--r-- 1,162 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
(*
 * This generic module is used for computing static single assignment form.
 * Actually only the renaming and iterated dominance frontiers computation
 * is implemented here.  
 *
 * -- Allen
 *)
signature STATIC_SINGLE_ASSIGNMENT_FORM =
sig

   structure Dom : DOMINATOR_TREE

   type var     = int 
   type phi  = var * var * var list (* orig def/def/uses *)
   type renamer = {defs : var list, uses: var list} ->
                  {defs : var list, uses: var list}
   type copy    = {dst : var list, src: var list} -> unit

         (* 
          * Given a set of definitions for each block,
          * Compute the set of phi nodes.
          *)
   val compute_ssa : 
       ('n,'e,'g) Dom.dominator_tree ->
       { max_var      : var,  
         defs         : 'n Graph.node -> var list,
         is_live      : var * int -> bool,
         rename_var   : var -> var,
         rename_stmt  : {rename:renamer,copy:copy} -> 'n Graph.node -> unit,
         insert_phi   : {block    : 'n Graph.node,
                         in_edges : 'e Graph.edge list,
                         phis     : phi list 
                        } -> unit
       } -> unit
end